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