Revert the sync.
[reactos.git] / drivers / ksfilter / ks / kstypes.h
1 #pragma once
2
3 #include <ntddk.h>
4 #include <ks.h>
5
6 typedef struct
7 {
8 KoCreateObjectHandler CreateObjectHandler;
9 }KO_DRIVER_EXTENSION, *PKO_DRIVER_EXTENSION;
10
11 typedef struct
12 {
13 const KSDEVICE_DESCRIPTOR *Descriptor;
14 }KS_DRIVER_EXTENSION, *PKS_DRIVER_EXTENSION;
15
16 typedef struct
17 {
18 KSOBJECT_HEADER ObjectHeader;
19 KSOBJECT_CREATE_ITEM CreateItem;
20 }KO_OBJECT_HEADER, *PKO_OBJECT_HEADER;
21
22
23 typedef struct
24 {
25 KSDISPATCH_TABLE DispatchTable;
26 KSOBJECTTYPE Type;
27
28 LONG ItemListCount;
29 LIST_ENTRY ItemList;
30
31 UNICODE_STRING ObjectClass;
32 PUNKNOWN Unknown;
33 PVOID ObjectType;
34
35 PDEVICE_OBJECT TargetDevice;
36 LIST_ENTRY TargetDeviceListEntry;
37
38 PDEVICE_OBJECT ParentDeviceObject;
39
40 PFNKSCONTEXT_DISPATCH PowerDispatch;
41 PVOID PowerContext;
42 LIST_ENTRY PowerDispatchEntry;
43 PKSOBJECT_CREATE_ITEM OriginalCreateItem;
44 ACCESS_MASK AccessMask;
45
46 }KSIOBJECT_HEADER, *PKSIOBJECT_HEADER;
47
48 typedef struct
49 {
50 LIST_ENTRY Entry;
51 PKSOBJECT_CREATE_ITEM CreateItem;
52 PFNKSITEMFREECALLBACK ItemFreeCallback;
53 LONG ReferenceCount;
54 LIST_ENTRY ObjectItemList;
55 }CREATE_ITEM_ENTRY, *PCREATE_ITEM_ENTRY;
56
57 typedef struct
58 {
59 KSOBJECTTYPE Type;
60 PKSDEVICE KsDevice;
61 KMUTEX ControlMutex;
62 LIST_ENTRY EventList;
63 KSPIN_LOCK EventListLock;
64 union
65 {
66 PKSDEVICE KsDevice;
67 PKSFILTERFACTORY KsFilterFactory;
68 PKSFILTER KsFilter;
69 }Parent;
70
71 union
72 {
73 PKSFILTERFACTORY FilterFactory;
74 PKSFILTER Filter;
75 PKSPIN Pin;
76 }Next;
77
78 union
79 {
80 PKSFILTERFACTORY FilterFactory;
81 PKSFILTER Filter;
82 }FirstChild;
83
84 }KSBASIC_HEADER, *PKSBASIC_HEADER;
85
86 typedef struct
87 {
88 KSBASIC_HEADER BasicHeader;
89 KSDEVICE KsDevice;
90 IKsDeviceVtbl *lpVtblIKsDevice;
91
92 LONG ref;
93 ERESOURCE SecurityLock;
94
95 LONG ItemListCount;
96 LIST_ENTRY ItemList;
97
98 ULONG DeviceIndex;
99 PDEVICE_OBJECT PnpDeviceObject;
100 PDEVICE_OBJECT BaseDevice;
101
102 KSTARGET_STATE TargetState;
103 LIST_ENTRY TargetDeviceList;
104
105 KMUTEX DeviceMutex;
106 KMUTEX BagMutex;
107
108 LIST_ENTRY PowerDispatchList;
109 LIST_ENTRY ObjectBags;
110
111 }KSIDEVICE_HEADER, *PKSIDEVICE_HEADER;
112
113 typedef struct
114 {
115 PKSIDEVICE_HEADER DeviceHeader;
116
117 }DEVICE_EXTENSION, *PDEVICE_EXTENSION;
118
119 typedef struct
120 {
121 LIST_ENTRY Entry;
122 UNICODE_STRING SymbolicLink;
123 }SYMBOLIC_LINK_ENTRY, *PSYMBOLIC_LINK_ENTRY;
124
125 typedef struct
126 {
127 PKSIDEVICE_HEADER DeviceHeader;
128 PIO_WORKITEM WorkItem;
129 }PNP_POSTSTART_CONTEXT, *PPNP_POSTSTART_CONTEXT;
130
131 typedef struct
132 {
133 PIRP Irp;
134 KEVENT Event;
135 }KSREMOVE_BUS_INTERFACE_CTX, *PKSREMOVE_BUS_INTERFACE_CTX;
136
137 typedef struct
138 {
139 PLIST_ENTRY List;
140 PFILE_OBJECT FileObject;
141 PKSEVENT_ENTRY EventEntry;
142 PIRP Irp;
143 }KSEVENT_CTX, *PKSEVENT_CTX;
144
145 typedef BOOLEAN (NTAPI *PKSEVENT_SYNCHRONIZED_ROUTINE)(PKSEVENT_CTX Context);
146
147 typedef struct
148 {
149 BOOLEAN Enabled;
150
151 PDEVICE_OBJECT PnpDeviceObject;
152 PDEVICE_OBJECT PhysicalDeviceObject;
153 PDEVICE_OBJECT BusDeviceObject;
154
155 UNICODE_STRING ServicePath;
156 UNICODE_STRING SymbolicLinkName;
157
158 WCHAR BusIdentifier[1];
159 }BUS_ENUM_DEVICE_EXTENSION, *PBUS_ENUM_DEVICE_EXTENSION;