1 #if defined(__cplusplus)
5 /* Helper macro to enable gcc's extension. */
6 #ifndef __GNU_EXTENSION
8 #define __GNU_EXTENSION __extension__
10 #define __GNU_EXTENSION
14 #define STDMETHODCALLTYPE __stdcall
19 typedef struct _BDA_PIN_PAIRING
23 ULONG ulcMaxInputsPerOutput
;
24 ULONG ulcMinInputsPerOutput
;
25 ULONG ulcMaxOutputsPerInput
;
26 ULONG ulcMinOutputsPerInput
;
27 ULONG ulcTopologyJoints
;
28 const ULONG
*pTopologyJoints
;
29 } BDA_PIN_PAIRING
, *PBDA_PIN_PAIRING
;
31 typedef struct _BDA_FILTER_TEMPLATE
33 const KSFILTER_DESCRIPTOR
*pFilterDescriptor
;
35 const BDA_PIN_PAIRING
*pPinPairs
;
36 } BDA_FILTER_TEMPLATE
, *PBDA_FILTER_TEMPLATE
;
39 typedef struct _KSM_PIN
48 } KSM_PIN
, * PKSM_PIN
;
52 STDMETHODIMP_(NTSTATUS
) BdaCheckChanges(IN PIRP Irp
);
53 STDMETHODIMP_(NTSTATUS
) BdaCommitChanges(IN PIRP Irp
);
55 STDMETHODIMP_(NTSTATUS
) BdaCreateFilterFactory(
56 IN PKSDEVICE pKSDevice
,
57 IN
const KSFILTER_DESCRIPTOR
*pFilterDescriptor
,
58 IN
const BDA_FILTER_TEMPLATE
*pBdaFilterTemplate
);
60 STDMETHODIMP_(NTSTATUS
) BdaCreateFilterFactoryEx(
61 IN PKSDEVICE pKSDevice
,
62 IN
const KSFILTER_DESCRIPTOR
*pFilterDescriptor
,
63 IN
const BDA_FILTER_TEMPLATE
*pBdaFilterTemplate
,
64 OUT PKSFILTERFACTORY
*ppKSFilterFactory
);
66 STDMETHODIMP_(NTSTATUS
) BdaCreatePin(
67 IN PKSFILTER pKSFilter
,
71 STDMETHODIMP_(NTSTATUS
) BdaCreateTopology(
72 IN PKSFILTER pKSFilter
,
74 IN ULONG OutputPinId
);
76 STDMETHODIMP_(NTSTATUS
) BdaDeletePin(
77 IN PKSFILTER pKSFilter
,
80 STDMETHODIMP_(NTSTATUS
) BdaFilterFactoryUpdateCacheData(
81 IN PKSFILTERFACTORY pFilterFactory
,
82 IN
const KSFILTER_DESCRIPTOR
*pFilterDescriptor OPTIONAL
);
84 STDMETHODIMP_(NTSTATUS
) BdaGetChangeState(
86 OUT BDA_CHANGE_STATE
*pChangeState
);
88 STDMETHODIMP_(NTSTATUS
) BdaInitFilter(
89 IN PKSFILTER pKSFilter
,
90 IN
const BDA_FILTER_TEMPLATE
*pBdaFilterTemplate
);
92 STDMETHODIMP_(NTSTATUS
) BdaMethodCreatePin(
94 IN KSMETHOD
*pKSMethod
,
95 OUT ULONG
*pulPinFactoryID
);
97 STDMETHODIMP_(NTSTATUS
) BdaMethodCreateTopology(
99 IN KSMETHOD
*pKSMethod
,
100 OPTIONAL PVOID pvIgnored
);
102 STDMETHODIMP_(NTSTATUS
) BdaMethodDeletePin(
104 IN KSMETHOD
*pKSMethod
,
105 OPTIONAL PVOID pvIgnored
);
107 STDMETHODIMP_(NTSTATUS
) BdaPropertyGetControllingPinId(
109 IN KSP_BDA_NODE_PIN
*pProperty
,
110 OUT ULONG
*pulControllingPinId
);
112 STDMETHODIMP_(NTSTATUS
) BdaPropertyGetPinControl(
114 IN KSPROPERTY
*pKSProperty
,
115 OUT ULONG
*pulProperty
);
117 STDMETHODIMP_(NTSTATUS
) BdaPropertyNodeDescriptors(
119 IN KSPROPERTY
*pKSProperty
,
120 OUT BDANODE_DESCRIPTOR
*pNodeDescriptorProperty
);
122 STDMETHODIMP_(NTSTATUS
) BdaPropertyNodeEvents(
124 IN KSP_NODE
*pKSProperty
,
125 OUT GUID
*pguidProperty
);
127 STDMETHODIMP_(NTSTATUS
) BdaPropertyNodeMethods(
129 IN KSP_NODE
*pKSProperty
,
130 OUT GUID
*pguidProperty
);
132 STDMETHODIMP_(NTSTATUS
) BdaPropertyNodeProperties(
134 IN KSP_NODE
*pKSProperty
,
135 OUT GUID
*pguidProperty
);
137 STDMETHODIMP_(NTSTATUS
) BdaPropertyNodeTypes(
139 IN KSPROPERTY
*pKSProperty
,
140 OUT ULONG
*pulProperty
);
142 STDMETHODIMP_(NTSTATUS
) BdaPropertyPinTypes(
144 IN KSPROPERTY
*pKSProperty
,
145 OUT ULONG
*pulProperty
);
147 STDMETHODIMP_(NTSTATUS
) BdaPropertyTemplateConnections(
149 IN KSPROPERTY
*pKSProperty
,
150 OUT KSTOPOLOGY_CONNECTION
*pConnectionProperty
);
152 STDMETHODIMP_(NTSTATUS
) BdaStartChanges(IN PIRP Irp
);
153 STDMETHODIMP_(NTSTATUS
) BdaUninitFilter(IN PKSFILTER pKSFilter
);
155 STDMETHODIMP_(NTSTATUS
) BdaValidateNodeProperty(
157 IN KSPROPERTY
*pKSProperty
);
159 #if defined(__cplusplus)