[CMAKE]
[reactos.git] / drivers / ksfilter / ks / ksfunc.h
1 #pragma once
2
3 #include "ksiface.h"
4 #include "kstypes.h"
5
6 #define TAG_KSDEVICE 'DESK'
7 #define TAG_KSOBJECT_TAG 'HOSK'
8
9 VOID
10 CompleteRequest(
11 PIRP Irp,
12 CCHAR PriorityBoost);
13
14
15
16 NTSTATUS
17 NTAPI
18 KspCreateObjectType(
19 IN HANDLE ParentHandle,
20 IN LPWSTR ObjectType,
21 PVOID CreateParameters,
22 UINT CreateParametersSize,
23 IN ACCESS_MASK DesiredAccess,
24 OUT PHANDLE NodeHandle);
25
26 NTSTATUS
27 NTAPI
28 KspCreateFilterFactory(
29 IN PDEVICE_OBJECT DeviceObject,
30 IN const KSFILTER_DESCRIPTOR *Descriptor,
31 IN PWSTR RefString OPTIONAL,
32 IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
33 IN ULONG CreateItemFlags,
34 IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL,
35 IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL,
36 OUT PKSFILTERFACTORY *FilterFactory OPTIONAL);
37
38 NTSTATUS
39 NTAPI
40 IKsDevice_Create(
41 IN PDEVICE_OBJECT DeviceObject,
42 IN PIRP Irp);
43
44 NTSTATUS
45 NTAPI
46 IKsDevice_Pnp(
47 IN PDEVICE_OBJECT DeviceObject,
48 IN PIRP Irp);
49
50 NTSTATUS
51 NTAPI
52 IKsDevice_Power(
53 IN PDEVICE_OBJECT DeviceObject,
54 IN PIRP Irp);
55
56 NTSTATUS
57 NTAPI
58 KspCreateFilter(
59 IN PDEVICE_OBJECT DeviceObject,
60 IN PIRP Irp,
61 IN IKsFilterFactory *iface);
62
63 NTSTATUS
64 KspSetDeviceInterfacesState(
65 IN PLIST_ENTRY ListHead,
66 IN BOOL Enable);
67
68 NTSTATUS
69 KspFreeDeviceInterfaces(
70 IN PLIST_ENTRY ListHead);
71
72 NTSTATUS
73 KspRegisterDeviceInterfaces(
74 IN PDEVICE_OBJECT PhysicalDeviceObject,
75 IN ULONG CategoriesCount,
76 IN GUID const*Categories,
77 IN PUNICODE_STRING ReferenceString,
78 OUT PLIST_ENTRY SymbolicLinkList);
79
80 NTSTATUS
81 KspForwardIrpSynchronous(
82 IN PDEVICE_OBJECT DeviceObject,
83 IN PIRP Irp);
84
85 PVOID
86 AllocateItem(
87 IN POOL_TYPE PoolType,
88 IN SIZE_T NumberOfBytes);
89
90 VOID
91 FreeItem(
92 IN PVOID Item);
93
94 KSDDKAPI
95 NTSTATUS
96 NTAPI
97 KspPinPropertyHandler(
98 IN PIRP Irp,
99 IN PKSPROPERTY Property,
100 IN OUT PVOID Data,
101 IN ULONG DescriptorsCount,
102 IN const KSPIN_DESCRIPTOR* Descriptors,
103 IN ULONG DescriptorSize);
104
105
106 NTSTATUS
107 FindMatchingCreateItem(
108 PLIST_ENTRY ListHead,
109 ULONG BufferSize,
110 LPWSTR Buffer,
111 OUT PCREATE_ITEM_ENTRY *OutCreateItem);
112
113 NTSTATUS
114 KspCopyCreateRequest(
115 IN PIRP Irp,
116 IN LPWSTR ObjectClass,
117 IN OUT PULONG Size,
118 OUT PVOID * Result);
119
120 NTSTATUS
121 KspCreatePin(
122 IN PDEVICE_OBJECT DeviceObject,
123 IN PIRP Irp,
124 IN PKSDEVICE KsDevice,
125 IN IKsFilterFactory * FilterFactory,
126 IN IKsFilter* Filter,
127 IN PKSPIN_CONNECT Connect,
128 IN KSPIN_DESCRIPTOR_EX* Descriptor);
129
130 NTSTATUS
131 KspAddCreateItemToList(
132 OUT PLIST_ENTRY ListHead,
133 IN ULONG ItemsCount,
134 IN PKSOBJECT_CREATE_ITEM ItemsList);
135
136 VOID
137 KspFreeCreateItems(
138 IN PLIST_ENTRY ListHead);
139
140 NTSTATUS
141 KspPropertyHandler(
142 IN PIRP Irp,
143 IN ULONG PropertySetsCount,
144 IN const KSPROPERTY_SET* PropertySet,
145 IN PFNKSALLOCATOR Allocator OPTIONAL,
146 IN ULONG PropertyItemSize OPTIONAL);
147
148 NTSTATUS
149 NTAPI
150 IKsFilterFactory_Create(
151 IN PDEVICE_OBJECT DeviceObject,
152 IN PIRP Irp);
153
154 NTSTATUS
155 KspSetFilterFactoriesState(
156 IN PKSIDEVICE_HEADER DeviceHeader,
157 IN BOOLEAN NewState);
158
159 NTSTATUS
160 NTAPI
161 KspMethodHandlerWithAllocator(
162 IN PIRP Irp,
163 IN ULONG MethodSetsCount,
164 IN const KSMETHOD_SET *MethodSet,
165 IN PFNKSALLOCATOR Allocator OPTIONAL,
166 IN ULONG MethodItemSize OPTIONAL);
167
168 VOID
169 IKsFilter_AddPin(
170 PKSFILTER Filter,
171 PKSPIN Pin);
172
173 VOID
174 IKsFilter_RemovePin(
175 PKSFILTER Filter,
176 PKSPIN Pin);
177
178 NTSTATUS
179 KspEnableEvent(
180 IN PIRP Irp,
181 IN ULONG EventSetsCount,
182 IN PKSEVENT_SET EventSet,
183 IN OUT PLIST_ENTRY EventsList OPTIONAL,
184 IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL,
185 IN PVOID EventsLock OPTIONAL,
186 IN PFNKSALLOCATOR Allocator OPTIONAL,
187 IN ULONG EventItemSize OPTIONAL);
188
189 NTSTATUS
190 KspValidateConnectRequest(
191 IN PIRP Irp,
192 IN ULONG DescriptorsCount,
193 IN PVOID Descriptors,
194 IN ULONG DescriptorSize,
195 OUT PKSPIN_CONNECT* Connect);
196
197 NTSTATUS
198 KspReadMediaCategory(
199 IN LPGUID Category,
200 PKEY_VALUE_PARTIAL_INFORMATION *OutInformation);
201