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.

118 lines
3.1 KiB

  1. //---------------------------------------------------------------------------
  2. //
  3. // Module: gn.h
  4. //
  5. // Description: graph node classes
  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. #define GN_FLAGS_PLAYBACK 0x00000001
  29. #define GN_FLAGS_RECORD 0x00000002
  30. #define GN_FLAGS_MIDI 0x00000004
  31. //---------------------------------------------------------------------------
  32. // Classes
  33. //---------------------------------------------------------------------------
  34. typedef class CGraphNode : public CListDoubleItem
  35. {
  36. public:
  37. CGraphNode(
  38. PDEVICE_NODE pDeviceNode,
  39. ULONG ulFlags
  40. );
  41. ~CGraphNode(
  42. );
  43. NTSTATUS
  44. Create(
  45. );
  46. ENUMFUNC
  47. Destroy(
  48. )
  49. {
  50. Assert(this);
  51. delete this;
  52. return(STATUS_CONTINUE);
  53. };
  54. private:
  55. NTSTATUS
  56. Create(
  57. PLOGICAL_FILTER_NODE pLogicalFilterNode
  58. );
  59. NTSTATUS
  60. CreateGraph(
  61. PPIN_NODE pPinNode,
  62. PCONNECT_NODE pConnectNodePrevious,
  63. PLOGICAL_FILTER_NODE pLogicalFilterNodePrevious,
  64. PGRAPH_PIN_INFO pGraphPinInfoPrevious,
  65. ULONG ulFlagsCurrent,
  66. ULONG ulOverhead
  67. );
  68. NTSTATUS
  69. CreateGraphToPin(
  70. PPIN_NODE pPinNode,
  71. PCONNECT_NODE pConnectNodePrevious,
  72. PLOGICAL_FILTER_NODE pLogicalFilterNode,
  73. PGRAPH_PIN_INFO pGraphPinInfo,
  74. ULONG ulFlagsCurrent,
  75. ULONG ulOverhead
  76. );
  77. NTSTATUS
  78. CreateGraphFromPin(
  79. PPIN_NODE pPinNode,
  80. PPIN_NODE pPinNodeTo,
  81. PCONNECT_NODE pConnectNode,
  82. PLOGICAL_FILTER_NODE pLogicalFilterNode,
  83. PGRAPH_PIN_INFO pGraphPinInfo,
  84. ULONG ulFlagsCurrent,
  85. ULONG ulOverhead
  86. );
  87. public:
  88. PDEVICE_NODE pDeviceNode;
  89. LIST_PIN_NODE lstPinNode;
  90. LIST_START_NODE lstStartNode;
  91. LIST_START_INFO lstStartInfo;
  92. LIST_CONNECT_INFO lstConnectInfo;
  93. LIST_GRAPH_PIN_INFO lstGraphPinInfo;
  94. LIST_GRAPH_NODE_INSTANCE lstGraphNodeInstance;
  95. LIST_DESTROY_TOPOLOGY_CONNECTION lstTopologyConnection;
  96. LIST_MULTI_LOGICAL_FILTER_NODE lstLogicalFilterNode;
  97. LIST_MULTI_LOGICAL_FILTER_NODE lstLogicalFilterNodeNoBypass;
  98. ULONG ulFlags;
  99. DefineSignature(0x20204E47); // GN
  100. } GRAPH_NODE, *PGRAPH_NODE;
  101. //---------------------------------------------------------------------------
  102. typedef ListDoubleDestroy<GRAPH_NODE> LIST_GRAPH_NODE;
  103. //---------------------------------------------------------------------------