- Implement KsFreeEventList, KsDisableEvent
[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 LIST_ENTRY EventList;
64 KSPIN_LOCK EventListLock;
65
66 union
67 {
68 PKSDEVICE KsDevice;
69 PKSFILTERFACTORY KsFilterFactory;
70 PKSFILTER KsFilter;
71 }Parent;
72 }KSBASIC_HEADER, *PKSBASIC_HEADER;
73
74 typedef struct
75 {
76 KSBASIC_HEADER BasicHeader;
77 KSDEVICE KsDevice;
78 IKsDeviceVtbl *lpVtblIKsDevice;
79
80 LONG ref;
81 ERESOURCE SecurityLock;
82
83 LONG ItemListCount;
84 LIST_ENTRY ItemList;
85
86 ULONG DeviceIndex;
87 PDEVICE_OBJECT PnpDeviceObject;
88 PDEVICE_OBJECT BaseDevice;
89
90 KSTARGET_STATE TargetState;
91 LIST_ENTRY TargetDeviceList;
92
93 KMUTEX DeviceMutex;
94 KSDEVICE_DESCRIPTOR* Descriptor;
95
96 LIST_ENTRY PowerDispatchList;
97 LIST_ENTRY ObjectBags;
98
99 }KSIDEVICE_HEADER, *PKSIDEVICE_HEADER;
100
101 typedef struct
102 {
103 PKSIDEVICE_HEADER DeviceHeader;
104
105 }DEVICE_EXTENSION, *PDEVICE_EXTENSION;
106
107 typedef struct
108 {
109 LIST_ENTRY Entry;
110 UNICODE_STRING SymbolicLink;
111 }SYMBOLIC_LINK_ENTRY, *PSYMBOLIC_LINK_ENTRY;
112
113 typedef struct
114 {
115 PKSIDEVICE_HEADER DeviceHeader;
116 PIO_WORKITEM WorkItem;
117 }PNP_POSTSTART_CONTEXT, *PPNP_POSTSTART_CONTEXT;
118
119 typedef struct
120 {
121 PIRP Irp;
122 KEVENT Event;
123 }KSREMOVE_BUS_INTERFACE_CTX, *PKSREMOVE_BUS_INTERFACE_CTX;
124
125 typedef struct
126 {
127 PLIST_ENTRY List;
128 PFILE_OBJECT FileObject;
129 PKSEVENT_ENTRY EventEntry;
130 PIRP Irp;
131 }KSEVENT_CTX, *PKSEVENT_CTX;
132
133 typedef BOOLEAN (NTAPI *PKSEVENT_SYNCHRONIZED_ROUTINE)(PKSEVENT_CTX Context);
134
135 #endif