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