Leaked source code of windows server 2003
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.

148 lines
3.7 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. );
  50. ENUMFUNC
  51. Destroy(
  52. )
  53. {
  54. if(this != NULL) {
  55. Assert(this);
  56. delete this;
  57. }
  58. return(STATUS_CONTINUE);
  59. };
  60. NTSTATUS
  61. IntelligentConnect(
  62. PDEVICE_NODE pDeviceNode,
  63. PKSPIN_CONNECT pPinConnect,
  64. PWAVEFORMATEX pWaveFormatEx
  65. );
  66. NTSTATUS
  67. Connect(
  68. PDEVICE_NODE pDeviceNode,
  69. PKSPIN_CONNECT pPinConnect,
  70. PWAVEFORMATEX pWaveFormatEx,
  71. PKSPIN_CONNECT pPinConnectDirect
  72. );
  73. NTSTATUS
  74. AecConnectionFormat(
  75. PDEVICE_NODE pDeviceNode,
  76. PKSPIN_CONNECT *ppPinConnect);
  77. NTSTATUS
  78. CreateTopologyTable(
  79. PGRAPH_NODE_INSTANCE pGraphNodeInstance
  80. );
  81. NTSTATUS
  82. GetTopologyNodeFileObject(
  83. OUT PFILE_OBJECT *ppFileObject,
  84. IN ULONG NodeId
  85. );
  86. BOOL
  87. IsRender()
  88. {
  89. return pStartNode->fRender;
  90. };
  91. NTSTATUS
  92. SetState(
  93. KSSTATE NewState,
  94. ULONG ulFlags
  95. );
  96. NTSTATUS
  97. SetStateTopDown(
  98. KSSTATE NewState,
  99. KSSTATE PreviousState,
  100. ULONG ulFlags
  101. );
  102. NTSTATUS
  103. SetStateBottomUp(
  104. KSSTATE NewState,
  105. KSSTATE PreviousState,
  106. ULONG ulFlags
  107. );
  108. KSSTATE CurrentState;
  109. PSTART_NODE pStartNode;
  110. PPIN_INSTANCE pPinInstance;
  111. PVIRTUAL_NODE_DATA pVirtualNodeData;
  112. PFILE_OBJECT *papFileObjectTopologyTable;
  113. LIST_CONNECT_NODE_INSTANCE lstConnectNodeInstance;
  114. PFILTER_NODE_INSTANCE pFilterNodeInstance;
  115. PPIN_NODE_INSTANCE pPinNodeInstance;
  116. public:
  117. DefineSignature(0x20494E53); // SNI
  118. } START_NODE_INSTANCE, *PSTART_NODE_INSTANCE;
  119. //---------------------------------------------------------------------------
  120. typedef ListDoubleDestroy<START_NODE_INSTANCE> LIST_START_NODE_INSTANCE;
  121. //---------------------------------------------------------------------------
  122. // Globals
  123. //---------------------------------------------------------------------------
  124. extern WAVEFORMATEX aWaveFormatEx[];
  125. //---------------------------------------------------------------------------