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.

154 lines
3.6 KiB

  1. //---------------------------------------------------------------------------
  2. //
  3. // Module: sni.h
  4. //
  5. // Description: Start Node Instance Class
  6. //
  7. //
  8. //@@BEGIN_MSINTERNAL
  9. // Development Team:
  10. // Mike McLaughlin
  11. //
  12. // History: Date Author Comment
  13. //
  14. //@@END_MSINTERNAL
  15. //---------------------------------------------------------------------------
  16. //
  17. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  18. // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  19. // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  20. // PURPOSE.
  21. //
  22. // Copyright (c) 1996-1999 Microsoft Corporation. All Rights Reserved.
  23. //
  24. //---------------------------------------------------------------------------
  25. //---------------------------------------------------------------------------
  26. // Constants and Macros
  27. //---------------------------------------------------------------------------
  28. //---------------------------------------------------------------------------
  29. // Classes
  30. //---------------------------------------------------------------------------
  31. typedef class CStartNodeInstance : public CListDoubleItem
  32. {
  33. private:
  34. CStartNodeInstance(
  35. PPIN_INSTANCE pPinInstance,
  36. PSTART_NODE pStartNode
  37. );
  38. ~CStartNodeInstance();
  39. VOID
  40. CleanUp(
  41. );
  42. public:
  43. static NTSTATUS
  44. Create(
  45. PPIN_INSTANCE pPinInstance,
  46. PSTART_NODE pStartNode,
  47. PKSPIN_CONNECT pPinConnect,
  48. PWAVEFORMATEX pWaveFormatExRequested,
  49. PWAVEFORMATEX pWaveFormatExRegistry
  50. );
  51. ENUMFUNC
  52. Destroy(
  53. )
  54. {
  55. if(this != NULL) {
  56. Assert(this);
  57. delete this;
  58. }
  59. return(STATUS_CONTINUE);
  60. };
  61. NTSTATUS
  62. IntelligentConnect(
  63. PDEVICE_NODE pDeviceNode,
  64. PKSPIN_CONNECT pPinConnect,
  65. PWAVEFORMATEX pWaveFormatEx
  66. );
  67. NTSTATUS
  68. Connect(
  69. PDEVICE_NODE pDeviceNode,
  70. PKSPIN_CONNECT pPinConnect,
  71. PWAVEFORMATEX pWaveFormatEx,
  72. PKSPIN_CONNECT pPinConnectDirect
  73. );
  74. NTSTATUS
  75. AecConnectionFormat(
  76. PDEVICE_NODE pDeviceNode,
  77. PKSPIN_CONNECT *ppPinConnect);
  78. NTSTATUS
  79. CreateTopologyTable(
  80. PGRAPH_NODE_INSTANCE pGraphNodeInstance
  81. );
  82. NTSTATUS
  83. GetTopologyNodeFileObject(
  84. OUT PFILE_OBJECT *ppFileObject,
  85. IN ULONG NodeId
  86. );
  87. BOOL
  88. IsRender()
  89. {
  90. return pStartNode->fRender;
  91. };
  92. NTSTATUS
  93. SetState(
  94. KSSTATE NewState,
  95. ULONG ulFlags
  96. );
  97. NTSTATUS
  98. SetStateTopDown(
  99. KSSTATE NewState,
  100. KSSTATE PreviousState,
  101. ULONG ulFlags
  102. );
  103. NTSTATUS
  104. SetStateBottomUp(
  105. KSSTATE NewState,
  106. KSSTATE PreviousState,
  107. ULONG ulFlags
  108. );
  109. #ifdef DEBUG
  110. ENUMFUNC Dump();
  111. PKSPIN_CONNECT pPinConnect;
  112. #endif
  113. KSSTATE CurrentState;
  114. PSTART_NODE pStartNode;
  115. PPIN_INSTANCE pPinInstance;
  116. PVIRTUAL_NODE_DATA pVirtualNodeData;
  117. PFILE_OBJECT *papFileObjectTopologyTable;
  118. LIST_CONNECT_NODE_INSTANCE lstConnectNodeInstance;
  119. PFILTER_NODE_INSTANCE pFilterNodeInstance;
  120. PPIN_NODE_INSTANCE pPinNodeInstance;
  121. public:
  122. DefineSignature(0x20494E53); // SNI
  123. } START_NODE_INSTANCE, *PSTART_NODE_INSTANCE;
  124. //---------------------------------------------------------------------------
  125. typedef ListDoubleDestroy<START_NODE_INSTANCE> LIST_START_NODE_INSTANCE;
  126. //---------------------------------------------------------------------------
  127. // Globals
  128. //---------------------------------------------------------------------------
  129. extern WAVEFORMATEX aWaveFormatEx[];
  130. //---------------------------------------------------------------------------