xref: /reactos/sdk/include/ddk/bdasup.h (revision 5100859e)
1 #pragma once
2 
3 #if (NTDDI_VERSION >= NTDDI_WINXP)
4 
5 #if defined(__cplusplus)
6 extern "C" {
7 #endif
8 
9 #define STDMETHODCALLTYPE __stdcall
10 
11 #ifndef _WDMDDK_
12 typedef GUID *PGUID;
13 #endif
14 
15 /* Types */
16 
17 typedef ULONG BDA_TOPOLOGY_JOINT, *PBDA_TOPOLOGY_JOINT;
18 
19 typedef struct _BDA_PIN_PAIRING {
20   ULONG ulInputPin;
21   ULONG ulOutputPin;
22   ULONG ulcMaxInputsPerOutput;
23   ULONG ulcMinInputsPerOutput;
24   ULONG ulcMaxOutputsPerInput;
25   ULONG ulcMinOutputsPerInput;
26   ULONG ulcTopologyJoints;
27   const ULONG *pTopologyJoints;
28 } BDA_PIN_PAIRING, *PBDA_PIN_PAIRING;
29 
30 typedef struct _BDA_FILTER_TEMPLATE {
31   const KSFILTER_DESCRIPTOR *pFilterDescriptor;
32   ULONG ulcPinPairs;
33   const BDA_PIN_PAIRING *pPinPairs;
34 } BDA_FILTER_TEMPLATE, *PBDA_FILTER_TEMPLATE;
35 
36 typedef struct _KSM_PIN_PAIR {
37   KSMETHOD Method;
38   ULONG InputPinId;
39   ULONG OutputPinId;
40   ULONG Reserved;
41 } KSM_PIN_PAIR, * PKSM_PIN_PAIR;
42 
43 typedef struct _KSM_PIN {
44   KSMETHOD Method;
45   __GNU_EXTENSION union {
46     ULONG PinId;
47     ULONG PinType;
48   };
49   ULONG Reserved;
50 } KSM_PIN, * PKSM_PIN;
51 
52 /* Functions */
53 
54 _Must_inspect_result_
55 _IRQL_requires_(PASSIVE_LEVEL)
56 STDMETHODIMP_(NTSTATUS)
57 BdaCheckChanges(
58   _In_ PIRP Irp);
59 
60 _Must_inspect_result_
61 _IRQL_requires_(PASSIVE_LEVEL)
62 STDMETHODIMP_(NTSTATUS)
63 BdaCommitChanges(
64   _In_ PIRP Irp);
65 
66 _Must_inspect_result_
67 _IRQL_requires_(PASSIVE_LEVEL)
68 STDMETHODIMP_(NTSTATUS)
69 BdaCreateFilterFactory(
70   _In_ PKSDEVICE pKSDevice,
71   _In_ const KSFILTER_DESCRIPTOR *pFilterDescriptor,
72   _In_ const BDA_FILTER_TEMPLATE *pBdaFilterTemplate);
73 
74 _Must_inspect_result_
75 _IRQL_requires_(PASSIVE_LEVEL)
76 STDMETHODIMP_(NTSTATUS)
77 BdaCreateFilterFactoryEx(
78   _In_ PKSDEVICE pKSDevice,
79   _In_ const KSFILTER_DESCRIPTOR *pFilterDescriptor,
80   _In_ const BDA_FILTER_TEMPLATE *pBdaFilterTemplate,
81   _Out_opt_ PKSFILTERFACTORY *ppKSFilterFactory);
82 
83 _Must_inspect_result_
84 _IRQL_requires_(PASSIVE_LEVEL)
85 STDMETHODIMP_(NTSTATUS)
86 BdaCreatePin(
87   _In_ PKSFILTER pKSFilter,
88   _In_ ULONG ulPinType,
89   _Out_opt_ ULONG *pulPinId);
90 
91 _Must_inspect_result_
92 _IRQL_requires_(PASSIVE_LEVEL)
93 STDMETHODIMP_(NTSTATUS)
94 BdaCreateTopology(
95   _In_ PKSFILTER pKSFilter,
96   _In_ ULONG InputPinId,
97   _In_ ULONG OutputPinId);
98 
99 _Must_inspect_result_
100 _IRQL_requires_(PASSIVE_LEVEL)
101 STDMETHODIMP_(NTSTATUS)
102 BdaDeletePin(
103   _In_ PKSFILTER pKSFilter,
104   _Out_opt_ ULONG *pulPinId);
105 
106 _Must_inspect_result_
107 _IRQL_requires_(PASSIVE_LEVEL)
108 STDMETHODIMP_(NTSTATUS)
109 BdaFilterFactoryUpdateCacheData(
110   _In_ PKSFILTERFACTORY pFilterFactory,
111   _In_opt_ const KSFILTER_DESCRIPTOR *pFilterDescriptor);
112 
113 _Must_inspect_result_
114 _IRQL_requires_(PASSIVE_LEVEL)
115 STDMETHODIMP_(NTSTATUS)
116 BdaGetChangeState(
117   _In_ PIRP Irp,
118   _Out_opt_ BDA_CHANGE_STATE *pChangeState);
119 
120 _Must_inspect_result_
121 _IRQL_requires_(PASSIVE_LEVEL)
122 STDMETHODIMP_(NTSTATUS)
123 BdaInitFilter(
124   _In_ PKSFILTER pKSFilter,
125   _In_ const BDA_FILTER_TEMPLATE *pBdaFilterTemplate);
126 
127 _Must_inspect_result_
128 _IRQL_requires_(PASSIVE_LEVEL)
129 STDMETHODIMP_(NTSTATUS)
130 BdaMethodCreatePin(
131   _In_ PIRP Irp,
132   _In_ KSMETHOD *pKSMethod,
133   _Out_opt_ ULONG *pulPinFactoryID);
134 
135 _Must_inspect_result_
136 _IRQL_requires_(PASSIVE_LEVEL)
137 STDMETHODIMP_(NTSTATUS)
138 BdaMethodCreateTopology(
139   _In_ PIRP Irp,
140   _In_ KSMETHOD *pKSMethod,
141   PVOID pvIgnored);
142 
143 _Must_inspect_result_
144 _IRQL_requires_(PASSIVE_LEVEL)
145 STDMETHODIMP_(NTSTATUS)
146 BdaMethodDeletePin(
147   _In_ PIRP Irp,
148   _In_ KSMETHOD *pKSMethod,
149   PVOID pvIgnored);
150 
151 _Must_inspect_result_
152 _IRQL_requires_(PASSIVE_LEVEL)
153 STDMETHODIMP_(NTSTATUS)
154 BdaPropertyGetControllingPinId(
155   _In_ PIRP Irp,
156   _In_ KSP_BDA_NODE_PIN *pProperty,
157   _Out_opt_ ULONG *pulControllingPinId);
158 
159 _Must_inspect_result_
160 _IRQL_requires_(PASSIVE_LEVEL)
161 STDMETHODIMP_(NTSTATUS)
162 BdaPropertyGetPinControl(
163   _In_ PIRP Irp,
164   _In_ KSPROPERTY *pKSProperty,
165   _Out_opt_ ULONG *pulProperty);
166 
167 _Must_inspect_result_
168 _IRQL_requires_(PASSIVE_LEVEL)
169 STDMETHODIMP_(NTSTATUS)
170 BdaPropertyNodeDescriptors(
171   _In_ PIRP Irp,
172   _In_ KSPROPERTY *pKSProperty,
173   _Out_opt_ BDANODE_DESCRIPTOR *pNodeDescriptorProperty);
174 
175 _Must_inspect_result_
176 _IRQL_requires_(PASSIVE_LEVEL)
177 STDMETHODIMP_(NTSTATUS)
178 BdaPropertyNodeEvents(
179   _In_ PIRP Irp,
180   _In_ KSP_NODE *pKSProperty,
181   _Out_opt_ GUID *pguidProperty);
182 
183 _Must_inspect_result_
184 _IRQL_requires_(PASSIVE_LEVEL)
185 STDMETHODIMP_(NTSTATUS)
186 BdaPropertyNodeMethods(
187   _In_ PIRP Irp,
188   _In_ KSP_NODE *pKSProperty,
189   _Out_opt_ GUID *pguidProperty);
190 
191 _Must_inspect_result_
192 _IRQL_requires_(PASSIVE_LEVEL)
193 STDMETHODIMP_(NTSTATUS)
194 BdaPropertyNodeProperties(
195   _In_ PIRP Irp,
196   _In_ KSP_NODE *pKSProperty,
197   _Out_opt_ GUID *pguidProperty);
198 
199 _Must_inspect_result_
200 _IRQL_requires_(PASSIVE_LEVEL)
201 STDMETHODIMP_(NTSTATUS)
202 BdaPropertyNodeTypes(
203   _In_ PIRP Irp,
204   _In_ KSPROPERTY *pKSProperty,
205   _Out_writes_bytes_(OutputBufferLenFromIrp(Irp)) ULONG *pulProperty);
206 
207 _Must_inspect_result_
208 _IRQL_requires_(PASSIVE_LEVEL)
209 STDMETHODIMP_(NTSTATUS)
210 BdaPropertyPinTypes(
211   _In_ PIRP Irp,
212   _In_ KSPROPERTY *pKSProperty,
213   _Out_writes_bytes_(OutputBufferLenFromIrp(Irp)) ULONG *pulProperty);
214 
215 _Must_inspect_result_
216 _IRQL_requires_(PASSIVE_LEVEL)
217 STDMETHODIMP_(NTSTATUS)
218 BdaPropertyTemplateConnections(
219   _In_ PIRP Irp,
220   _In_ KSPROPERTY *pKSProperty,
221   _Out_opt_ KSTOPOLOGY_CONNECTION *pConnectionProperty);
222 
223 _Must_inspect_result_
224 _IRQL_requires_(PASSIVE_LEVEL)
225 STDMETHODIMP_(NTSTATUS)
226 BdaStartChanges(
227   _In_ PIRP Irp);
228 
229 _Must_inspect_result_
230 _IRQL_requires_(PASSIVE_LEVEL)
231 STDMETHODIMP_(NTSTATUS)
232 BdaUninitFilter(
233   _In_ PKSFILTER pKSFilter);
234 
235 _Must_inspect_result_
236 _IRQL_requires_(PASSIVE_LEVEL)
237 STDMETHODIMP_(NTSTATUS)
238 BdaValidateNodeProperty(
239   _In_ PIRP Irp,
240   _In_ KSPROPERTY *pKSProperty);
241 
242 #if defined(__cplusplus)
243 }
244 #endif
245 
246 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
247