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