windows-nt/Source/XPSP1/NT/drivers/wdm/audio/sysaudio/gn.h
2020-09-26 16:20:57 +08:00

131 lines
3.2 KiB
C++

//---------------------------------------------------------------------------
//
// Module: gn.h
//
// Description: graph node classes
//
//
//@@BEGIN_MSINTERNAL
// Development Team:
// Mike McLaughlin
//
// History: Date Author Comment
//
//@@END_MSINTERNAL
//---------------------------------------------------------------------------
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
// PURPOSE.
//
// Copyright (c) 1996-1999 Microsoft Corporation. All Rights Reserved.
//
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Constants and Macros
//---------------------------------------------------------------------------
#define GN_FLAGS_PLAYBACK 0x00000001
#define GN_FLAGS_RECORD 0x00000002
#define GN_FLAGS_MIDI 0x00000004
#ifdef REGISTRY_PREFERRED_DEVICE
#define GN_FLAGS_PREFERRED_MASK (GN_FLAGS_PLAYBACK | \
GN_FLAGS_RECORD | \
GN_FLAGS_MIDI)
#endif
//---------------------------------------------------------------------------
// Classes
//---------------------------------------------------------------------------
typedef class CGraphNode : public CListDoubleItem
{
public:
CGraphNode(
PDEVICE_NODE pDeviceNode,
ULONG ulFlags
);
~CGraphNode(
);
NTSTATUS
Create(
);
ENUMFUNC
Destroy(
)
{
Assert(this);
delete this;
return(STATUS_CONTINUE);
};
#ifdef DEBUG
ENUMFUNC
Dump(
);
#endif
private:
NTSTATUS
Create(
PLOGICAL_FILTER_NODE pLogicalFilterNode
);
NTSTATUS
CreateGraph(
PPIN_NODE pPinNode,
PCONNECT_NODE pConnectNodePrevious,
PLOGICAL_FILTER_NODE pLogicalFilterNodePrevious,
PGRAPH_PIN_INFO pGraphPinInfoPrevious,
ULONG ulFlagsCurrent,
ULONG ulOverhead
);
NTSTATUS
CreateGraphToPin(
PPIN_NODE pPinNode,
PCONNECT_NODE pConnectNodePrevious,
PLOGICAL_FILTER_NODE pLogicalFilterNode,
PGRAPH_PIN_INFO pGraphPinInfo,
ULONG ulFlagsCurrent,
ULONG ulOverhead
);
NTSTATUS
CreateGraphFromPin(
PPIN_NODE pPinNode,
PPIN_NODE pPinNodeTo,
PCONNECT_NODE pConnectNode,
PLOGICAL_FILTER_NODE pLogicalFilterNode,
PGRAPH_PIN_INFO pGraphPinInfo,
ULONG ulFlagsCurrent,
ULONG ulOverhead
);
public:
PDEVICE_NODE pDeviceNode;
LIST_PIN_NODE lstPinNode;
LIST_START_NODE lstStartNode;
LIST_START_INFO lstStartInfo;
LIST_CONNECT_INFO lstConnectInfo;
LIST_GRAPH_PIN_INFO lstGraphPinInfo;
LIST_GRAPH_NODE_INSTANCE lstGraphNodeInstance;
LIST_DESTROY_TOPOLOGY_CONNECTION lstTopologyConnection;
LIST_MULTI_LOGICAL_FILTER_NODE lstLogicalFilterNode;
LIST_MULTI_LOGICAL_FILTER_NODE lstLogicalFilterNodeNoBypass;
ULONG ulFlags;
DefineSignature(0x20204E47); // GN
} GRAPH_NODE, *PGRAPH_NODE;
//---------------------------------------------------------------------------
typedef ListDoubleDestroy<GRAPH_NODE> LIST_GRAPH_NODE;
//---------------------------------------------------------------------------