Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

213 lines
3.8 KiB

  1. /*++
  2. Copyright (c) 1999 Microsoft Corporation
  3. Module Name:
  4. outpin.cpp
  5. Abstract:
  6. Transport Ouput pin code.
  7. --*/
  8. #include "casamp.h"
  9. #ifdef ALLOC_DATA_PRAGMA
  10. #pragma const_seg("PAGECONST")
  11. #endif // ALLOC_DATA_PRAGMA
  12. #ifdef ALLOC_PRAGMA
  13. #pragma code_seg("PAGE")
  14. #endif // ALLOC_PRAGMA
  15. NTSTATUS
  16. CTransportOutputPin::PinCreate(
  17. IN OUT PKSPIN pKSPin,
  18. IN PIRP Irp
  19. )
  20. {
  21. NTSTATUS Status = STATUS_SUCCESS;
  22. CTransportOutputPin* pPin;
  23. CFilter* pFilter;
  24. _DbgPrintF(DEBUGLVL_VERBOSE,("CTransportOutputPin::PinCreate"));
  25. ASSERT(pKSPin);
  26. ASSERT(Irp);
  27. // Get a pointer to our filter instance that this pin is being
  28. // created for. Remember it for later.
  29. //
  30. pFilter = reinterpret_cast<CFilter*>(KsGetFilterFromIrp(Irp)->Context);
  31. // Create our transport pin object.
  32. //
  33. pPin = new(PagedPool,'IFsK') CTransportOutputPin;
  34. if (!pPin)
  35. {
  36. Status = STATUS_INSUFFICIENT_RESOURCES;
  37. goto exit;
  38. }
  39. // Link our pin context to our filter context.
  40. //
  41. pPin->SetFilter( pFilter);
  42. // Link our context to the KSPIN structure.
  43. //
  44. pKSPin->Context = pPin;
  45. exit:
  46. return Status;
  47. }
  48. NTSTATUS
  49. CTransportOutputPin::PinClose(
  50. IN OUT PKSPIN Pin,
  51. IN PIRP Irp
  52. )
  53. {
  54. _DbgPrintF(DEBUGLVL_VERBOSE,("PinClose"));
  55. ASSERT(Pin);
  56. ASSERT(Irp);
  57. CTransportOutputPin* pin = reinterpret_cast<CTransportOutputPin*>(Pin->Context);
  58. ASSERT(pin);
  59. delete pin;
  60. return STATUS_SUCCESS;
  61. }
  62. NTSTATUS
  63. CTransportOutputPin::GetECMMapStatus(
  64. IN PIRP Irp,
  65. IN PKSPROPERTY pKSProperty,
  66. IN PULONG pulProperty
  67. )
  68. {
  69. return E_NOTIMPL;
  70. }
  71. NTSTATUS
  72. CTransportOutputPin::GetCAModuleStatus(
  73. IN PIRP Irp,
  74. IN PKSPROPERTY pKSProperty,
  75. IN PULONG pulProperty
  76. )
  77. {
  78. return E_NOTIMPL;
  79. }
  80. NTSTATUS
  81. CTransportOutputPin::GetCASmartCardStatus(
  82. IN PIRP Irp,
  83. IN PKSPROPERTY pKSProperty,
  84. IN PULONG pulProperty
  85. )
  86. {
  87. return E_NOTIMPL;
  88. }
  89. NTSTATUS
  90. CTransportOutputPin::GetCAModuleUI(
  91. IN PIRP Irp,
  92. IN PKSPROPERTY pKSProperty,
  93. IN PBDA_CA_MODULE_UI pCAModuleUIProperty
  94. )
  95. {
  96. return E_NOTIMPL;
  97. }
  98. NTSTATUS
  99. CTransportOutputPin::PutECMMapEMMPID(
  100. IN PIRP Irp,
  101. IN PKSPROPERTY pKSProperty,
  102. IN PULONG pulProperty
  103. )
  104. {
  105. return E_NOTIMPL;
  106. }
  107. NTSTATUS
  108. CTransportOutputPin::GetECMMapList(
  109. IN PIRP Irp,
  110. IN PKSPROPERTY pKSProperty,
  111. IN PBDA_ECM_MAP pECMMapProperty
  112. )
  113. {
  114. return E_NOTIMPL;
  115. }
  116. NTSTATUS
  117. CTransportOutputPin::PutECMMapUpdateMap(
  118. IN PIRP Irp,
  119. IN PKSPROPERTY pKSProperty,
  120. IN PBDA_ECM_MAP pECMMapProperty
  121. )
  122. {
  123. return E_NOTIMPL;
  124. }
  125. NTSTATUS
  126. CTransportOutputPin::PutECMMapRemoveMap(
  127. IN PIRP Irp,
  128. IN PKSPROPERTY pKSProperty,
  129. IN PBDA_ECM_MAP pECMMapProperty
  130. )
  131. {
  132. return E_NOTIMPL;
  133. }
  134. NTSTATUS
  135. CTransportOutputPin::PutECMMapUpdateESDescriptor(
  136. IN PIRP Irp,
  137. IN PKSPROPERTY pKSProperty,
  138. IN PBDA_ES_DESCRIPTOR pESDescProperty
  139. )
  140. {
  141. return E_NOTIMPL;
  142. }
  143. NTSTATUS
  144. CTransportOutputPin::PutECMMapUpdateProgramDescriptor(
  145. IN PIRP Irp,
  146. IN PKSPROPERTY pKSProperty,
  147. IN PBDA_PROGRAM_DESCRIPTOR pProgramDescProperty
  148. )
  149. {
  150. return E_NOTIMPL;
  151. }
  152. NTSTATUS
  153. CTransportOutputPin::IntersectDataFormat(
  154. IN PVOID pContext,
  155. IN PIRP pIrp,
  156. IN PKSP_PIN Pin,
  157. IN PKSDATARANGE DataRange,
  158. IN PKSDATARANGE MatchingDataRange,
  159. IN ULONG DataBufferSize,
  160. OUT PVOID Data OPTIONAL,
  161. OUT PULONG DataSize
  162. )
  163. {
  164. if ( DataBufferSize < sizeof(KS_DATARANGE_BDA_TRANSPORT) )
  165. {
  166. *DataSize = sizeof( KS_DATARANGE_BDA_TRANSPORT );
  167. return STATUS_BUFFER_OVERFLOW;
  168. }
  169. else
  170. {
  171. ASSERT(DataBufferSize == sizeof(KS_DATARANGE_BDA_TRANSPORT));
  172. *DataSize = sizeof( KS_DATARANGE_BDA_TRANSPORT );
  173. RtlCopyMemory( Data, (PVOID)DataRange, sizeof(KS_DATARANGE_BDA_TRANSPORT));
  174. return STATUS_SUCCESS;
  175. }
  176. }