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) */ 197