Merge to trunk head (r46631)
[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 NTSTATUS
10 NTAPI
11 KspCreateObjectType(
12 IN HANDLE ParentHandle,
13 IN LPWSTR ObjectType,
14 PVOID CreateParameters,
15 UINT CreateParametersSize,
16 IN ACCESS_MASK DesiredAccess,
17 OUT PHANDLE NodeHandle);
18
19 NTSTATUS
20 NTAPI
21 KspCreateFilterFactory(
22 IN PDEVICE_OBJECT DeviceObject,
23 IN const KSFILTER_DESCRIPTOR *Descriptor,
24 IN PWSTR RefString OPTIONAL,
25 IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
26 IN ULONG CreateItemFlags,
27 IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL,
28 IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL,
29 OUT PKSFILTERFACTORY *FilterFactory OPTIONAL);
30
31 NTSTATUS
32 NTAPI
33 IKsDevice_Create(
34 IN PDEVICE_OBJECT DeviceObject,
35 IN PIRP Irp);
36
37 NTSTATUS
38 NTAPI
39 IKsDevice_Pnp(
40 IN PDEVICE_OBJECT DeviceObject,
41 IN PIRP Irp);
42
43 NTSTATUS
44 NTAPI
45 IKsDevice_Power(
46 IN PDEVICE_OBJECT DeviceObject,
47 IN PIRP Irp);
48
49 NTSTATUS
50 NTAPI
51 KspCreateFilter(
52 IN PDEVICE_OBJECT DeviceObject,
53 IN PIRP Irp,
54 IN IKsFilterFactory *iface);
55
56 NTSTATUS
57 KspSetDeviceInterfacesState(
58 IN PLIST_ENTRY ListHead,
59 IN BOOL Enable);
60
61 NTSTATUS
62 KspFreeDeviceInterfaces(
63 IN PLIST_ENTRY ListHead);
64
65 NTSTATUS
66 KspRegisterDeviceInterfaces(
67 IN PDEVICE_OBJECT PhysicalDeviceObject,
68 IN ULONG CategoriesCount,
69 IN GUID const*Categories,
70 IN PUNICODE_STRING ReferenceString,
71 OUT PLIST_ENTRY SymbolicLinkList);
72
73 NTSTATUS
74 KspForwardIrpSynchronous(
75 IN PDEVICE_OBJECT DeviceObject,
76 IN PIRP Irp);
77
78 PVOID
79 AllocateItem(
80 IN POOL_TYPE PoolType,
81 IN SIZE_T NumberOfBytes);
82
83 VOID
84 FreeItem(
85 IN PVOID Item);
86
87 NTSTATUS
88 NTAPI
89 KspTopologyPropertyHandler(
90 IN PIRP Irp,
91 IN PKSIDENTIFIER Request,
92 IN OUT PVOID Data);
93
94 NTSTATUS
95 NTAPI
96 KspPinPropertyHandler(
97 IN PIRP Irp,
98 IN PKSIDENTIFIER Request,
99 IN OUT PVOID Data);
100
101 NTSTATUS
102 FindMatchingCreateItem(
103 PLIST_ENTRY ListHead,
104 ULONG BufferSize,
105 LPWSTR Buffer,
106 OUT PCREATE_ITEM_ENTRY *OutCreateItem);
107
108 NTSTATUS
109 KspCopyCreateRequest(
110 IN PIRP Irp,
111 IN LPWSTR ObjectClass,
112 IN OUT PULONG Size,
113 OUT PVOID * Result);
114
115 NTSTATUS
116 KspCreatePin(
117 IN PDEVICE_OBJECT DeviceObject,
118 IN PIRP Irp,
119 IN PKSDEVICE KsDevice,
120 IN IKsFilterFactory * FilterFactory,
121 IN IKsFilter* Filter,
122 IN PKSPIN_CONNECT Connect,
123 IN KSPIN_DESCRIPTOR_EX* Descriptor);
124
125 NTSTATUS
126 IKsFilter_AddPin(
127 IKsFilter * Filter,
128 PKSPIN Pin);
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