[KS]
[reactos.git] / reactos / drivers / ksfilter / ks / ksfunc.h
1 #ifndef KSFUNC_H__
2 #define KSFUNC_H__
3
4 #include "ksiface.h"
5 #include "kstypes.h"
6
7 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
8 #define TAG_KSDEVICE TAG('K', 'S', 'E', 'D')
9 #define TAG_KSOBJECT_TAG TAG('K', 'S', 'O', 'H')
10
11 NTSTATUS
12 NTAPI
13 KspCreateObjectType(
14 IN HANDLE ParentHandle,
15 IN LPWSTR ObjectType,
16 PVOID CreateParameters,
17 UINT CreateParametersSize,
18 IN ACCESS_MASK DesiredAccess,
19 OUT PHANDLE NodeHandle);
20
21 NTSTATUS
22 NTAPI
23 KspCreateFilterFactory(
24 IN PDEVICE_OBJECT DeviceObject,
25 IN const KSFILTER_DESCRIPTOR *Descriptor,
26 IN PWSTR RefString OPTIONAL,
27 IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
28 IN ULONG CreateItemFlags,
29 IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL,
30 IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL,
31 OUT PKSFILTERFACTORY *FilterFactory OPTIONAL);
32
33 NTSTATUS
34 NTAPI
35 IKsDevice_Create(
36 IN PDEVICE_OBJECT DeviceObject,
37 IN PIRP Irp);
38
39 NTSTATUS
40 NTAPI
41 IKsDevice_Pnp(
42 IN PDEVICE_OBJECT DeviceObject,
43 IN PIRP Irp);
44
45 NTSTATUS
46 NTAPI
47 IKsDevice_Power(
48 IN PDEVICE_OBJECT DeviceObject,
49 IN PIRP Irp);
50
51 NTSTATUS
52 NTAPI
53 KspCreateFilter(
54 IN PDEVICE_OBJECT DeviceObject,
55 IN PIRP Irp,
56 IN IKsFilterFactory *iface);
57
58 NTSTATUS
59 KspSetDeviceInterfacesState(
60 IN PLIST_ENTRY ListHead,
61 IN BOOL Enable);
62
63 NTSTATUS
64 KspFreeDeviceInterfaces(
65 IN PLIST_ENTRY ListHead);
66
67 NTSTATUS
68 KspRegisterDeviceInterfaces(
69 IN PDEVICE_OBJECT PhysicalDeviceObject,
70 IN ULONG CategoriesCount,
71 IN GUID const*Categories,
72 IN PUNICODE_STRING ReferenceString,
73 OUT PLIST_ENTRY SymbolicLinkList);
74
75 NTSTATUS
76 KspForwardIrpSynchronous(
77 IN PDEVICE_OBJECT DeviceObject,
78 IN PIRP Irp);
79
80 PVOID
81 AllocateItem(
82 IN POOL_TYPE PoolType,
83 IN SIZE_T NumberOfBytes);
84
85 VOID
86 FreeItem(
87 IN PVOID Item);
88
89 NTSTATUS
90 NTAPI
91 KspTopologyPropertyHandler(
92 IN PIRP Irp,
93 IN PKSIDENTIFIER Request,
94 IN OUT PVOID Data);
95
96 NTSTATUS
97 NTAPI
98 KspPinPropertyHandler(
99 IN PIRP Irp,
100 IN PKSIDENTIFIER Request,
101 IN OUT PVOID Data);
102
103 NTSTATUS
104 FindMatchingCreateItem(
105 PLIST_ENTRY ListHead,
106 ULONG BufferSize,
107 LPWSTR Buffer,
108 OUT PCREATE_ITEM_ENTRY *OutCreateItem);
109
110 NTSTATUS
111 KspCopyCreateRequest(
112 IN PIRP Irp,
113 IN LPWSTR ObjectClass,
114 IN OUT PULONG Size,
115 OUT PVOID * Result);
116
117 NTSTATUS
118 KspCreatePin(
119 IN PDEVICE_OBJECT DeviceObject,
120 IN PIRP Irp,
121 IN PKSDEVICE KsDevice,
122 IN IKsFilterFactory * FilterFactory,
123 IN IKsFilter* Filter,
124 IN PKSPIN_CONNECT Connect,
125 IN KSPIN_DESCRIPTOR_EX* Descriptor);
126
127 NTSTATUS
128 KspAddCreateItemToList(
129 OUT PLIST_ENTRY ListHead,
130 IN ULONG ItemsCount,
131 IN PKSOBJECT_CREATE_ITEM ItemsList);
132
133 VOID
134 KspFreeCreateItems(
135 IN PLIST_ENTRY ListHead);
136
137 #endif