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