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