- Implement KsAcquireControl, KsReleaseControl
[reactos.git] / reactos / drivers / ksfilter / ks / kstypes.h
1 #ifndef KSTYPES_H__
2 #define KSTYPES_H__
3
4 #include <ntddk.h>
5 #include <ks.h>
6
7 typedef struct
8 {
9 KoCreateObjectHandler CreateObjectHandler;
10 }KO_DRIVER_EXTENSION, *PKO_DRIVER_EXTENSION;
11
12 typedef struct
13 {
14 const KSDEVICE_DESCRIPTOR *Descriptor;
15 }KS_DRIVER_EXTENSION, *PKS_DRIVER_EXTENSION;
16
17 typedef struct
18 {
19 KSOBJECT_HEADER ObjectHeader;
20 KSOBJECT_CREATE_ITEM CreateItem;
21 }KO_OBJECT_HEADER, *PKO_OBJECT_HEADER;
22
23
24 typedef struct
25 {
26 KSDISPATCH_TABLE DispatchTable;
27 KSOBJECTTYPE Type;
28
29 LONG ItemListCount;
30 LIST_ENTRY ItemList;
31
32 UNICODE_STRING ObjectClass;
33 PUNKNOWN Unknown;
34 PVOID ObjectType;
35
36 PDEVICE_OBJECT TargetDevice;
37 LIST_ENTRY TargetDeviceListEntry;
38
39 PDEVICE_OBJECT ParentDeviceObject;
40
41 PFNKSCONTEXT_DISPATCH PowerDispatch;
42 PVOID PowerContext;
43 LIST_ENTRY PowerDispatchEntry;
44 PKSOBJECT_CREATE_ITEM OriginalCreateItem;
45 ACCESS_MASK AccessMask;
46
47 }KSIOBJECT_HEADER, *PKSIOBJECT_HEADER;
48
49 typedef struct
50 {
51 LIST_ENTRY Entry;
52 PKSOBJECT_CREATE_ITEM CreateItem;
53 PFNKSITEMFREECALLBACK ItemFreeCallback;
54 LONG ReferenceCount;
55 LIST_ENTRY ObjectItemList;
56 }CREATE_ITEM_ENTRY, *PCREATE_ITEM_ENTRY;
57
58 typedef struct
59 {
60 KSOBJECTTYPE Type;
61 PKSDEVICE KsDevice;
62 KMUTEX ControlMutex;
63 union
64 {
65 PKSDEVICE KsDevice;
66 PKSFILTERFACTORY KsFilterFactory;
67 PKSFILTER KsFilter;
68 }Parent;
69 }KSBASIC_HEADER, *PKSBASIC_HEADER;
70
71 typedef struct
72 {
73 KSBASIC_HEADER BasicHeader;
74 KSDEVICE KsDevice;
75 IKsDeviceVtbl *lpVtblIKsDevice;
76
77 LONG ref;
78 ERESOURCE SecurityLock;
79
80 LONG ItemListCount;
81 LIST_ENTRY ItemList;
82
83 ULONG DeviceIndex;
84 PDEVICE_OBJECT PnpDeviceObject;
85 PDEVICE_OBJECT BaseDevice;
86
87 KSTARGET_STATE TargetState;
88 LIST_ENTRY TargetDeviceList;
89
90 KMUTEX DeviceMutex;
91 KSDEVICE_DESCRIPTOR* Descriptor;
92
93 LIST_ENTRY PowerDispatchList;
94 LIST_ENTRY ObjectBags;
95
96 }KSIDEVICE_HEADER, *PKSIDEVICE_HEADER;
97
98 typedef struct
99 {
100 PKSIDEVICE_HEADER DeviceHeader;
101
102 }DEVICE_EXTENSION, *PDEVICE_EXTENSION;
103
104 typedef struct
105 {
106 LIST_ENTRY Entry;
107 UNICODE_STRING SymbolicLink;
108 }SYMBOLIC_LINK_ENTRY, *PSYMBOLIC_LINK_ENTRY;
109
110 typedef struct
111 {
112 PKSIDEVICE_HEADER DeviceHeader;
113 PIO_WORKITEM WorkItem;
114 }PNP_POSTSTART_CONTEXT, *PPNP_POSTSTART_CONTEXT;
115
116
117 #endif