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