51b365aaaad8d63194b61edaaeb293fb16cb2132
[reactos.git] / reactos / 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 PRKMUTEX 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 PADAPTER_OBJECT AdapterObject;
112
113 }KSIDEVICE_HEADER, *PKSIDEVICE_HEADER;
114
115 typedef struct
116 {
117 PKSIDEVICE_HEADER DeviceHeader;
118
119 }DEVICE_EXTENSION, *PDEVICE_EXTENSION;
120
121 typedef struct
122 {
123 LIST_ENTRY Entry;
124 UNICODE_STRING SymbolicLink;
125 CLSID DeviceInterfaceClass;
126 }SYMBOLIC_LINK_ENTRY, *PSYMBOLIC_LINK_ENTRY;
127
128 typedef struct
129 {
130 PKSIDEVICE_HEADER DeviceHeader;
131 PIO_WORKITEM WorkItem;
132 }PNP_POSTSTART_CONTEXT, *PPNP_POSTSTART_CONTEXT;
133
134 typedef struct
135 {
136 PIRP Irp;
137 KEVENT Event;
138 }KSREMOVE_BUS_INTERFACE_CTX, *PKSREMOVE_BUS_INTERFACE_CTX;
139
140 typedef struct
141 {
142 PLIST_ENTRY List;
143 PFILE_OBJECT FileObject;
144 PKSEVENT_ENTRY EventEntry;
145 PIRP Irp;
146 }KSEVENT_CTX, *PKSEVENT_CTX;
147
148 typedef BOOLEAN (NTAPI *PKSEVENT_SYNCHRONIZED_ROUTINE)(PKSEVENT_CTX Context);
149
150 typedef struct
151 {
152 BOOLEAN Enabled;
153
154 PDEVICE_OBJECT PnpDeviceObject;
155 PDEVICE_OBJECT PhysicalDeviceObject;
156 PDEVICE_OBJECT BusDeviceObject;
157
158 UNICODE_STRING ServicePath;
159 UNICODE_STRING SymbolicLinkName;
160
161 WCHAR BusIdentifier[1];
162 }BUS_ENUM_DEVICE_EXTENSION, *PBUS_ENUM_DEVICE_EXTENSION;
163
164 typedef struct
165 {
166 PUCHAR FilterData;
167 ULONG FilterLength;
168 ULONG FilterOffset;
169
170 PUCHAR DataCache;
171 ULONG DataLength;
172 ULONG DataOffset;
173
174 }KSPCACHE_DESCRIPTOR, *PKSPCACHE_DESCRIPTOR;
175
176 typedef struct
177 {
178 DWORD dwVersion;
179 DWORD dwMerit;
180 DWORD dwPins;
181 DWORD dwUnused;
182 }KSPCACHE_FILTER_HEADER, *PKSPCACHE_FILTER_HEADER;
183
184 typedef struct
185 {
186 ULONG Signature;
187 ULONG Flags;
188 ULONG Instances;
189 ULONG MediaTypes;
190 ULONG Mediums;
191 DWORD Category;
192 }KSPCACHE_PIN_HEADER, *PKSPCACHE_PIN_HEADER;
193
194
195 typedef struct
196 {
197 ULONG Signature;
198 ULONG dwUnused;
199 ULONG OffsetMajor;
200 ULONG OffsetMinor;
201 }KSPCACHE_DATARANGE, *PKSPCACHE_DATARANGE;
202
203
204 typedef struct
205 {
206 CLSID Medium;
207 ULONG dw1;
208 ULONG dw2;
209 }KSPCACHE_MEDIUM;
210