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.

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