[DDK]
[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 #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 STDMETHODIMP_(NTSTATUS)
55 BdaCheckChanges(
56 IN PIRP Irp);
57
58 STDMETHODIMP_(NTSTATUS)
59 BdaCommitChanges(
60 IN PIRP Irp);
61
62 STDMETHODIMP_(NTSTATUS)
63 BdaCreateFilterFactory(
64 IN PKSDEVICE pKSDevice,
65 IN const KSFILTER_DESCRIPTOR *pFilterDescriptor,
66 IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate);
67
68 STDMETHODIMP_(NTSTATUS)
69 BdaCreateFilterFactoryEx(
70 IN PKSDEVICE pKSDevice,
71 IN const KSFILTER_DESCRIPTOR *pFilterDescriptor,
72 IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate,
73 OUT PKSFILTERFACTORY *ppKSFilterFactory);
74
75 STDMETHODIMP_(NTSTATUS)
76 BdaCreatePin(
77 IN PKSFILTER pKSFilter,
78 IN ULONG ulPinType,
79 OUT ULONG *pulPinId);
80
81 STDMETHODIMP_(NTSTATUS)
82 BdaCreateTopology(
83 IN PKSFILTER pKSFilter,
84 IN ULONG InputPinId,
85 IN ULONG OutputPinId);
86
87 STDMETHODIMP_(NTSTATUS)
88 BdaDeletePin(
89 IN PKSFILTER pKSFilter,
90 IN ULONG *pulPinId);
91
92 STDMETHODIMP_(NTSTATUS)
93 BdaFilterFactoryUpdateCacheData(
94 IN PKSFILTERFACTORY pFilterFactory,
95 IN const KSFILTER_DESCRIPTOR *pFilterDescriptor OPTIONAL);
96
97 STDMETHODIMP_(NTSTATUS)
98 BdaGetChangeState(
99 IN PIRP Irp,
100 OUT BDA_CHANGE_STATE *pChangeState);
101
102 STDMETHODIMP_(NTSTATUS)
103 BdaInitFilter(
104 IN PKSFILTER pKSFilter,
105 IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate);
106
107 STDMETHODIMP_(NTSTATUS)
108 BdaMethodCreatePin(
109 IN PIRP Irp,
110 IN KSMETHOD *pKSMethod,
111 OUT ULONG *pulPinFactoryID);
112
113 STDMETHODIMP_(NTSTATUS)
114 BdaMethodCreateTopology(
115 IN PIRP Irp,
116 IN KSMETHOD *pKSMethod,
117 OPTIONAL PVOID pvIgnored);
118
119 STDMETHODIMP_(NTSTATUS)
120 BdaMethodDeletePin(
121 IN PIRP Irp,
122 IN KSMETHOD *pKSMethod,
123 OPTIONAL PVOID pvIgnored);
124
125 STDMETHODIMP_(NTSTATUS)
126 BdaPropertyGetControllingPinId(
127 IN PIRP Irp,
128 IN KSP_BDA_NODE_PIN *pProperty,
129 OUT ULONG *pulControllingPinId);
130
131 STDMETHODIMP_(NTSTATUS)
132 BdaPropertyGetPinControl(
133 IN PIRP Irp,
134 IN KSPROPERTY *pKSProperty,
135 OUT ULONG *pulProperty);
136
137 STDMETHODIMP_(NTSTATUS)
138 BdaPropertyNodeDescriptors(
139 IN PIRP Irp,
140 IN KSPROPERTY *pKSProperty,
141 OUT BDANODE_DESCRIPTOR *pNodeDescriptorProperty);
142
143 STDMETHODIMP_(NTSTATUS)
144 BdaPropertyNodeEvents(
145 IN PIRP Irp,
146 IN KSP_NODE *pKSProperty,
147 OUT GUID *pguidProperty);
148
149 STDMETHODIMP_(NTSTATUS)
150 BdaPropertyNodeMethods(
151 IN PIRP Irp,
152 IN KSP_NODE *pKSProperty,
153 OUT GUID *pguidProperty);
154
155 STDMETHODIMP_(NTSTATUS)
156 BdaPropertyNodeProperties(
157 IN PIRP Irp,
158 IN KSP_NODE *pKSProperty,
159 OUT GUID *pguidProperty);
160
161 STDMETHODIMP_(NTSTATUS)
162 BdaPropertyNodeTypes(
163 IN PIRP Irp,
164 IN KSPROPERTY *pKSProperty,
165 OUT ULONG *pulProperty);
166
167 STDMETHODIMP_(NTSTATUS)
168 BdaPropertyPinTypes(
169 IN PIRP Irp,
170 IN KSPROPERTY *pKSProperty,
171 OUT ULONG *pulProperty);
172
173 STDMETHODIMP_(NTSTATUS)
174 BdaPropertyTemplateConnections(
175 IN PIRP Irp,
176 IN KSPROPERTY *pKSProperty,
177 OUT KSTOPOLOGY_CONNECTION *pConnectionProperty);
178
179 STDMETHODIMP_(NTSTATUS)
180 BdaStartChanges(
181 IN PIRP Irp);
182
183 STDMETHODIMP_(NTSTATUS)
184 BdaUninitFilter(
185 IN PKSFILTER pKSFilter);
186
187 STDMETHODIMP_(NTSTATUS)
188 BdaValidateNodeProperty(
189 IN PIRP Irp,
190 IN KSPROPERTY *pKSProperty);
191
192 #if defined(__cplusplus)
193 }
194 #endif
195
196 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */