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 #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