bdasup.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. #pragma once
  2. #if (NTDDI_VERSION >= NTDDI_WINXP)
  3. #if defined(__cplusplus)
  4. extern "C" {
  5. #endif
  6. #if defined(_ARM_)
  7. #define STDMETHODCALLTYPE
  8. #else
  9. #define STDMETHODCALLTYPE __stdcall
  10. #endif
  11. #ifndef _WDMDDK_
  12. typedef GUID *PGUID;
  13. #endif
  14. /* Types */
  15. typedef ULONG BDA_TOPOLOGY_JOINT, *PBDA_TOPOLOGY_JOINT;
  16. typedef struct _BDA_PIN_PAIRING {
  17. ULONG ulInputPin;
  18. ULONG ulOutputPin;
  19. ULONG ulcMaxInputsPerOutput;
  20. ULONG ulcMinInputsPerOutput;
  21. ULONG ulcMaxOutputsPerInput;
  22. ULONG ulcMinOutputsPerInput;
  23. ULONG ulcTopologyJoints;
  24. const ULONG *pTopologyJoints;
  25. } BDA_PIN_PAIRING, *PBDA_PIN_PAIRING;
  26. typedef struct _BDA_FILTER_TEMPLATE {
  27. const KSFILTER_DESCRIPTOR *pFilterDescriptor;
  28. ULONG ulcPinPairs;
  29. const BDA_PIN_PAIRING *pPinPairs;
  30. } BDA_FILTER_TEMPLATE, *PBDA_FILTER_TEMPLATE;
  31. typedef struct _KSM_PIN_PAIR {
  32. KSMETHOD Method;
  33. ULONG InputPinId;
  34. ULONG OutputPinId;
  35. ULONG Reserved;
  36. } KSM_PIN_PAIR, * PKSM_PIN_PAIR;
  37. typedef struct _KSM_PIN {
  38. KSMETHOD Method;
  39. __GNU_EXTENSION union {
  40. ULONG PinId;
  41. ULONG PinType;
  42. };
  43. ULONG Reserved;
  44. } KSM_PIN, * PKSM_PIN;
  45. /* Functions */
  46. STDMETHODIMP_(NTSTATUS)
  47. BdaCheckChanges(
  48. IN PIRP Irp);
  49. STDMETHODIMP_(NTSTATUS)
  50. BdaCommitChanges(
  51. IN PIRP Irp);
  52. STDMETHODIMP_(NTSTATUS)
  53. BdaCreateFilterFactory(
  54. IN PKSDEVICE pKSDevice,
  55. IN const KSFILTER_DESCRIPTOR *pFilterDescriptor,
  56. IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate);
  57. STDMETHODIMP_(NTSTATUS)
  58. BdaCreateFilterFactoryEx(
  59. IN PKSDEVICE pKSDevice,
  60. IN const KSFILTER_DESCRIPTOR *pFilterDescriptor,
  61. IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate,
  62. OUT PKSFILTERFACTORY *ppKSFilterFactory);
  63. STDMETHODIMP_(NTSTATUS)
  64. BdaCreatePin(
  65. IN PKSFILTER pKSFilter,
  66. IN ULONG ulPinType,
  67. OUT ULONG *pulPinId);
  68. STDMETHODIMP_(NTSTATUS)
  69. BdaCreateTopology(
  70. IN PKSFILTER pKSFilter,
  71. IN ULONG InputPinId,
  72. IN ULONG OutputPinId);
  73. STDMETHODIMP_(NTSTATUS)
  74. BdaDeletePin(
  75. IN PKSFILTER pKSFilter,
  76. IN ULONG *pulPinId);
  77. STDMETHODIMP_(NTSTATUS)
  78. BdaFilterFactoryUpdateCacheData(
  79. IN PKSFILTERFACTORY pFilterFactory,
  80. IN const KSFILTER_DESCRIPTOR *pFilterDescriptor OPTIONAL);
  81. STDMETHODIMP_(NTSTATUS)
  82. BdaGetChangeState(
  83. IN PIRP Irp,
  84. OUT BDA_CHANGE_STATE *pChangeState);
  85. STDMETHODIMP_(NTSTATUS)
  86. BdaInitFilter(
  87. IN PKSFILTER pKSFilter,
  88. IN const BDA_FILTER_TEMPLATE *pBdaFilterTemplate);
  89. STDMETHODIMP_(NTSTATUS)
  90. BdaMethodCreatePin(
  91. IN PIRP Irp,
  92. IN KSMETHOD *pKSMethod,
  93. OUT ULONG *pulPinFactoryID);
  94. STDMETHODIMP_(NTSTATUS)
  95. BdaMethodCreateTopology(
  96. IN PIRP Irp,
  97. IN KSMETHOD *pKSMethod,
  98. OPTIONAL PVOID pvIgnored);
  99. STDMETHODIMP_(NTSTATUS)
  100. BdaMethodDeletePin(
  101. IN PIRP Irp,
  102. IN KSMETHOD *pKSMethod,
  103. OPTIONAL PVOID pvIgnored);
  104. STDMETHODIMP_(NTSTATUS)
  105. BdaPropertyGetControllingPinId(
  106. IN PIRP Irp,
  107. IN KSP_BDA_NODE_PIN *pProperty,
  108. OUT ULONG *pulControllingPinId);
  109. STDMETHODIMP_(NTSTATUS)
  110. BdaPropertyGetPinControl(
  111. IN PIRP Irp,
  112. IN KSPROPERTY *pKSProperty,
  113. OUT ULONG *pulProperty);
  114. STDMETHODIMP_(NTSTATUS)
  115. BdaPropertyNodeDescriptors(
  116. IN PIRP Irp,
  117. IN KSPROPERTY *pKSProperty,
  118. OUT BDANODE_DESCRIPTOR *pNodeDescriptorProperty);
  119. STDMETHODIMP_(NTSTATUS)
  120. BdaPropertyNodeEvents(
  121. IN PIRP Irp,
  122. IN KSP_NODE *pKSProperty,
  123. OUT GUID *pguidProperty);
  124. STDMETHODIMP_(NTSTATUS)
  125. BdaPropertyNodeMethods(
  126. IN PIRP Irp,
  127. IN KSP_NODE *pKSProperty,
  128. OUT GUID *pguidProperty);
  129. STDMETHODIMP_(NTSTATUS)
  130. BdaPropertyNodeProperties(
  131. IN PIRP Irp,
  132. IN KSP_NODE *pKSProperty,
  133. OUT GUID *pguidProperty);
  134. STDMETHODIMP_(NTSTATUS)
  135. BdaPropertyNodeTypes(
  136. IN PIRP Irp,
  137. IN KSPROPERTY *pKSProperty,
  138. OUT ULONG *pulProperty);
  139. STDMETHODIMP_(NTSTATUS)
  140. BdaPropertyPinTypes(
  141. IN PIRP Irp,
  142. IN KSPROPERTY *pKSProperty,
  143. OUT ULONG *pulProperty);
  144. STDMETHODIMP_(NTSTATUS)
  145. BdaPropertyTemplateConnections(
  146. IN PIRP Irp,
  147. IN KSPROPERTY *pKSProperty,
  148. OUT KSTOPOLOGY_CONNECTION *pConnectionProperty);
  149. STDMETHODIMP_(NTSTATUS)
  150. BdaStartChanges(
  151. IN PIRP Irp);
  152. STDMETHODIMP_(NTSTATUS)
  153. BdaUninitFilter(
  154. IN PKSFILTER pKSFilter);
  155. STDMETHODIMP_(NTSTATUS)
  156. BdaValidateNodeProperty(
  157. IN PIRP Irp,
  158. IN KSPROPERTY *pKSProperty);
  159. #if defined(__cplusplus)
  160. }
  161. #endif
  162. #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */