129 lines
3.1 KiB
C++
129 lines
3.1 KiB
C++
//---------------------------------------------------------------------------
|
|
//
|
|
// Module: tn.h
|
|
//
|
|
// Description: Topology Node Class
|
|
//
|
|
//
|
|
//@@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 TN_FLAGS_DONT_FORWARD 0x00000001
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Classes
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef ListMulti<CLogicalFilterNode> LIST_MULTI_LOGICAL_FILTER_NODE;
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef class CTopologyNode : public CListSingleItem
|
|
{
|
|
public:
|
|
CTopologyNode(
|
|
PFILTER_NODE pFilterNode,
|
|
ULONG ulNodeNumber,
|
|
GUID *pguidType
|
|
);
|
|
|
|
~CTopologyNode(
|
|
);
|
|
|
|
static NTSTATUS
|
|
Create(
|
|
PTOPOLOGY_NODE *ppTopologyNode,
|
|
PFILTER_NODE pFilterNode,
|
|
ULONG ulNodeNumber,
|
|
GUID *pguidType
|
|
);
|
|
|
|
ENUMFUNC
|
|
Destroy()
|
|
{
|
|
Assert(this);
|
|
delete this;
|
|
return(STATUS_CONTINUE);
|
|
};
|
|
|
|
ENUMFUNC
|
|
InitializeTopologyNode(
|
|
PVOID pGraphNodeInstance
|
|
);
|
|
|
|
ENUMFUNC
|
|
AddTopologyNode(
|
|
PVOID pGraphNodeInstance
|
|
);
|
|
|
|
ENUMFUNC
|
|
MatchTopologyNode(
|
|
PVOID pReference
|
|
)
|
|
{
|
|
if(this == PTOPOLOGY_NODE(pReference)) {
|
|
return(STATUS_SUCCESS);
|
|
}
|
|
return(STATUS_CONTINUE);
|
|
};
|
|
|
|
#ifdef DEBUG
|
|
ENUMFUNC
|
|
Dump(
|
|
);
|
|
#endif
|
|
PFILTER_NODE pFilterNode;
|
|
GUID *pguidType;
|
|
ULONG ulFlags;
|
|
ULONG ulRealNodeNumber;
|
|
ULONG ulSysaudioNodeNumber;
|
|
ULONG iVirtualSource;
|
|
LIST_TOPOLOGY_PIN lstTopologyPin;
|
|
LIST_MULTI_LOGICAL_FILTER_NODE lstLogicalFilterNode;
|
|
DefineSignature(0x20204E54); // TN
|
|
|
|
} TOPOLOGY_NODE, *PTOPOLOGY_NODE;
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef ListSingleDestroy<TOPOLOGY_NODE> LIST_TOPOLOGY_NODE;
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef ListData<TOPOLOGY_NODE> LIST_DATA_TOPOLOGY_NODE, *PLIST_DATA_TOPOLOGY_NODE;
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Globals
|
|
//---------------------------------------------------------------------------
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Local prototypes
|
|
//---------------------------------------------------------------------------
|
|
|
|
NTSTATUS
|
|
CreateTopology(
|
|
PFILTER_NODE pFilterNode,
|
|
PKSTOPOLOGY pTopology
|
|
);
|
|
|
|
//---------------------------------------------------------------------------
|