365 lines
6 KiB
C
365 lines
6 KiB
C
/*++
|
||
|
||
Copyright (c) 1996 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
nm.h
|
||
|
||
Abstract:
|
||
|
||
Public interface definitions for the Node Manager component.
|
||
|
||
Author:
|
||
|
||
Mike Massa (mikemas) 12-Mar-1996
|
||
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
|
||
#ifndef _NM_INCLUDED
|
||
#define _NM_INCLUDED
|
||
|
||
|
||
//
|
||
// Types
|
||
//
|
||
|
||
typedef struct _NM_NODE *PNM_NODE;
|
||
typedef struct _NM_NETWORK *PNM_NETWORK;
|
||
typedef struct _NM_INTERFACE *PNM_INTERFACE;
|
||
|
||
|
||
//the callback registered for object notifications
|
||
typedef DWORD (WINAPI *NM_FIXUP_NOTIFYCB)(
|
||
IN DWORD dwFixupType,
|
||
OUT PVOID *ppPropertyList,
|
||
OUT LPDWORD pdwPropertyListSize,
|
||
OUT LPWSTR * szKeyName
|
||
);
|
||
|
||
|
||
//
|
||
// Data
|
||
//
|
||
#define NM_DEFAULT_NODE_LIMIT 2 // This is the default if
|
||
// MaxNodesInCluster is not set
|
||
|
||
|
||
|
||
#define NM_FORM_FIXUP 1
|
||
#define NM_JOIN_FIXUP 2
|
||
|
||
extern ULONG NmMaxNodes;
|
||
extern CL_NODE_ID NmMaxNodeId;
|
||
extern CL_NODE_ID NmLocalNodeId;
|
||
extern PNM_NODE NmLocalNode;
|
||
extern WCHAR NmLocalNodeName[];
|
||
extern WCHAR NmLocalNodeIdString[];
|
||
extern HANDLE NmClusnetHandle;
|
||
extern BOOL NmLocalNodeVersionChanged;
|
||
extern RESUTIL_PROPERTY_ITEM NmJoinFixupSDProperties[];
|
||
extern RESUTIL_PROPERTY_ITEM NmJoinFixupWINSProperties[];
|
||
extern RESUTIL_PROPERTY_ITEM NmJoinFixupDHCPProperties[];
|
||
extern RESUTIL_PROPERTY_ITEM NmJoinFixupSMTPProperties[];
|
||
extern RESUTIL_PROPERTY_ITEM NmJoinFixupNNTPProperties[];
|
||
extern RESUTIL_PROPERTY_ITEM NmJoinFixupIISProperties[];
|
||
extern RESUTIL_PROPERTY_ITEM NmJoinFixupNewMSMQProperties[];
|
||
extern RESUTIL_PROPERTY_ITEM NmJoinFixupMSDTCProperties[];
|
||
extern RESUTIL_PROPERTY_ITEM NmFixupVersionInfo[];
|
||
extern RESUTIL_PROPERTY_ITEM NmFixupClusterProperties[];
|
||
//
|
||
// Macros
|
||
//
|
||
#define NmIsValidNodeId(_id) ( ((_id) >= ClusterMinNodeId) && \
|
||
((_id) <= NmMaxNodeId) )
|
||
|
||
|
||
//
|
||
// Init/Shutdown Routines
|
||
//
|
||
DWORD
|
||
NmInitialize(
|
||
VOID
|
||
);
|
||
|
||
VOID
|
||
NmShutdown(
|
||
VOID
|
||
);
|
||
|
||
DWORD
|
||
NmFormNewCluster(
|
||
VOID
|
||
);
|
||
|
||
DWORD
|
||
NmJoinCluster(
|
||
IN RPC_BINDING_HANDLE SponsorBinding
|
||
);
|
||
|
||
DWORD
|
||
NmJoinComplete(
|
||
OUT DWORD *EndSeq
|
||
);
|
||
|
||
VOID
|
||
NmLeaveCluster(
|
||
VOID
|
||
);
|
||
|
||
DWORD
|
||
NmCreateNodeBindings(
|
||
IN LPCWSTR lpszNodeId,
|
||
IN LPCWSTR SponsorNetworkId
|
||
);
|
||
|
||
BOOL
|
||
NmCreateActiveNodeBindingsCallback(
|
||
IN PVOID Context1,
|
||
IN PVOID Context2,
|
||
IN PVOID Object,
|
||
IN LPCWSTR Name
|
||
);
|
||
|
||
DWORD
|
||
NmJoinNodeToCluster(
|
||
CL_NODE_ID JoiningNodeId
|
||
);
|
||
|
||
VOID
|
||
NmTimerTick(
|
||
IN DWORD MsTickInterval
|
||
);
|
||
|
||
DWORD
|
||
NmGetJoinSequence(
|
||
VOID
|
||
);
|
||
|
||
|
||
DWORD NmGetClusterOperationalVersion(
|
||
OUT LPDWORD pdwClusterHighestVersion,
|
||
OUT LPDWORD pdwClusterLowestVersion,
|
||
OUT LPDWORD pdwFlags
|
||
);
|
||
|
||
//
|
||
// Node Object Management Routines
|
||
//
|
||
PNM_NODE
|
||
NmReferenceNodeById(
|
||
IN DWORD NodeId
|
||
);
|
||
|
||
CLUSTER_NODE_STATE
|
||
NmGetNodeState(
|
||
IN PNM_NODE Node
|
||
);
|
||
|
||
DWORD
|
||
NmPauseNode(
|
||
IN PNM_NODE Node
|
||
);
|
||
|
||
DWORD
|
||
NmResumeNode(
|
||
IN PNM_NODE Node
|
||
);
|
||
|
||
DWORD
|
||
NmEvictNode(
|
||
IN PNM_NODE Node
|
||
);
|
||
|
||
VOID
|
||
NmAdviseNodeFailure(
|
||
IN DWORD NodeId,
|
||
IN DWORD ErrorCode
|
||
);
|
||
|
||
DWORD
|
||
NmEnumNodeInterfaces(
|
||
IN PNM_NODE Node,
|
||
OUT LPDWORD InterfaceCount,
|
||
OUT PNM_INTERFACE * InterfaceList[]
|
||
);
|
||
|
||
DWORD
|
||
NmGetNodeId(
|
||
IN PNM_NODE Node
|
||
);
|
||
|
||
DWORD
|
||
NmGetCurrentNumberOfNodes(
|
||
void
|
||
);
|
||
|
||
DWORD
|
||
NmGetMaxNodeId(
|
||
);
|
||
|
||
PNM_NODE
|
||
NmReferenceJoinerNode(
|
||
IN DWORD JoinerSequence,
|
||
IN CL_NODE_ID NodeId
|
||
);
|
||
|
||
VOID
|
||
NmDereferenceJoinerNode(
|
||
PNM_NODE JoinerNode
|
||
);
|
||
|
||
DWORD
|
||
WINAPI
|
||
NmNodeControl(
|
||
IN PNM_NODE Node,
|
||
IN PNM_NODE HostNode OPTIONAL,
|
||
IN DWORD ControlCode,
|
||
IN PUCHAR InBuffer,
|
||
IN DWORD InBufferSize,
|
||
OUT PUCHAR OutBuffer,
|
||
IN DWORD OutBufferSize,
|
||
OUT LPDWORD BytesReturned,
|
||
OUT LPDWORD Required
|
||
);
|
||
|
||
//
|
||
// Network Object Management Routines
|
||
//
|
||
CLUSTER_NETWORK_STATE
|
||
NmGetNetworkState(
|
||
IN PNM_NETWORK Network
|
||
);
|
||
|
||
DWORD
|
||
NmSetNetworkName(
|
||
IN PNM_NETWORK Network,
|
||
IN LPCWSTR Name
|
||
);
|
||
|
||
DWORD
|
||
NmSetNetworkPriorityOrder(
|
||
IN DWORD NetworkCount,
|
||
IN LPWSTR * NetworkIdList
|
||
);
|
||
|
||
DWORD
|
||
NmEnumInternalNetworks(
|
||
OUT LPDWORD NetworkCount,
|
||
OUT PNM_NETWORK * NetworkList[]
|
||
);
|
||
|
||
DWORD
|
||
NmEnumNetworkInterfaces(
|
||
IN PNM_NETWORK Network,
|
||
OUT LPDWORD InterfaceCount,
|
||
OUT PNM_INTERFACE * InterfaceList[]
|
||
);
|
||
|
||
DWORD
|
||
WINAPI
|
||
NmNetworkControl(
|
||
IN PNM_NETWORK Network,
|
||
IN PNM_NODE HostNode OPTIONAL,
|
||
IN DWORD ControlCode,
|
||
IN PUCHAR InBuffer,
|
||
IN DWORD InBufferSize,
|
||
OUT PUCHAR OutBuffer,
|
||
IN DWORD OutBufferSize,
|
||
OUT LPDWORD BytesReturned,
|
||
OUT LPDWORD Required
|
||
);
|
||
|
||
//
|
||
// Interface Object Management Routines
|
||
//
|
||
CLUSTER_NETINTERFACE_STATE
|
||
NmGetInterfaceState(
|
||
IN PNM_INTERFACE Interface
|
||
);
|
||
|
||
DWORD
|
||
NmGetInterfaceForNodeAndNetwork(
|
||
IN LPCWSTR NodeName,
|
||
IN LPCWSTR NetworkName,
|
||
OUT LPWSTR * InterfaceName
|
||
);
|
||
|
||
DWORD
|
||
WINAPI
|
||
NmInterfaceControl(
|
||
IN PNM_INTERFACE Interface,
|
||
IN PNM_NODE HostNode OPTIONAL,
|
||
IN DWORD ControlCode,
|
||
IN PUCHAR InBuffer,
|
||
IN DWORD InBufferSize,
|
||
OUT PUCHAR OutBuffer,
|
||
IN DWORD OutBufferSize,
|
||
OUT LPDWORD BytesReturned,
|
||
OUT LPDWORD Required
|
||
);
|
||
|
||
DWORD NmPerformFixups(
|
||
IN DWORD dwFixupType
|
||
);
|
||
|
||
DWORD
|
||
NmFixupNotifyCb(VOID);
|
||
|
||
//
|
||
// PnP Routines
|
||
//
|
||
VOID
|
||
NmPostPnpEvent(
|
||
IN CLUSNET_EVENT_TYPE EventType,
|
||
IN DWORD Context1,
|
||
IN DWORD Context2
|
||
);
|
||
|
||
//
|
||
// Connectoid related routines
|
||
//
|
||
VOID
|
||
NmCloseConnectoidAdviseSink(
|
||
VOID
|
||
);
|
||
|
||
DWORD
|
||
NmGetNodeHighestVersion(
|
||
IN PNM_NODE Node
|
||
);
|
||
|
||
DWORD
|
||
NmSetExtendedNodeState(
|
||
IN CLUSTER_NODE_STATE State
|
||
);
|
||
|
||
CLUSTER_NODE_STATE
|
||
NmGetExtendedNodeState(
|
||
IN PNM_NODE Node
|
||
);
|
||
|
||
//
|
||
// Intracluster RPC Monitoring and cancellation routines
|
||
//
|
||
|
||
VOID NmStartRpc(
|
||
IN DWORD NodeId
|
||
);
|
||
|
||
VOID NmEndRpc(
|
||
IN DWORD NodeId
|
||
);
|
||
|
||
// RPC ext error info dumping routine
|
||
|
||
VOID NmDumpRpcExtErrorInfo(
|
||
RPC_STATUS status
|
||
);
|
||
|
||
#endif // _NM_INCLUDED
|
||
|