Home | History | Annotate | Download | only in ddk
      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