windows-nt/Source/XPSP1/NT/base/cluster/inc/cnetapi.h

460 lines
8.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
cnetapi.h
Abstract:
Cluster Network driver control APIs
Author:
Mike Massa (mikemas) 14-Feb-1997
Environment:
User Mode.
Revision History:
--*/
#ifndef _CNETAPI_INCLUDED
#define _CNETAPI_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
//
// Join Phases
//
typedef enum {
ClusnetJoinPhase1 = 1,
ClusnetJoinPhase2 = 2,
ClusnetJoinPhase3 = 3,
ClusnetJoinPhase4 = 4,
ClusnetJoinPhaseAbort = 0xFFFFFFFF
} CLUSNET_JOIN_PHASE;
//
// Event Handler Routines.
//
typedef
VOID
(*CLUSNET_NODE_UP_ROUTINE)(
IN CL_NODE_ID NodeId
);
typedef
VOID
(*CLUSNET_NODE_DOWN_ROUTINE)(
IN CL_NODE_ID NodeId
);
typedef
BOOL
(*CLUSNET_CHECK_QUORUM_ROUTINE)(
VOID
);
typedef
VOID
(*CLUSNET_HOLD_IO_ROUTINE)(
VOID
);
typedef
VOID
(*CLUSNET_RESUME_IO_ROUTINE)(
VOID
);
typedef
VOID
(*CLUSNET_HALT_ROUTINE)(
IN DWORD HaltCode
);
//
// Routines
//
HANDLE
ClusnetOpenControlChannel(
IN ULONG ShareAccess
);
#define ClusnetCloseControlChannel(_handle) CloseHandle(_handle)
DWORD
ClusnetEnableShutdownOnClose(
IN HANDLE ControlChannel
);
DWORD
ClusnetDisableShutdownOnClose(
IN HANDLE ControlChannel
);
DWORD
ClusnetInitialize(
IN HANDLE ControlChannel,
IN CL_NODE_ID LocalNodeId,
IN ULONG MaxNodes,
IN CLUSNET_NODE_UP_ROUTINE NodeUpRoutine,
IN CLUSNET_NODE_DOWN_ROUTINE NodeDownRoutine,
IN CLUSNET_CHECK_QUORUM_ROUTINE CheckQuorumRoutine,
IN CLUSNET_HOLD_IO_ROUTINE HoldIoRoutine,
IN CLUSNET_RESUME_IO_ROUTINE ResumeIoRoutine,
IN CLUSNET_HALT_ROUTINE HaltRoutine
);
DWORD
ClusnetShutdown(
IN HANDLE ControlChannel
);
DWORD
ClusnetRegisterNode(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId
);
DWORD
ClusnetDeregisterNode(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId
);
DWORD
ClusnetRegisterNetwork(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId,
IN ULONG Priority,
IN BOOLEAN Restricted
);
DWORD
ClusnetDeregisterNetwork(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId
);
DWORD
ClusnetRegisterInterface(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId,
IN ULONG Priority,
IN PWSTR AdapterId,
IN ULONG AdapterIdLength,
IN PVOID TdiAddress,
IN ULONG TdiAddressLength,
OUT PULONG MediaStatus
);
DWORD
ClusnetDeregisterInterface(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId
);
DWORD
ClusnetOnlineNodeComm(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId
);
DWORD
ClusnetOfflineNodeComm(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId
);
DWORD
ClusnetOnlineNetwork(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId,
IN PWCHAR TdiProviderName,
IN PVOID TdiBindAddress,
IN ULONG TdiBindAddressLength,
IN LPWSTR AdapterName,
OUT PVOID TdiBindAddressInfo,
IN PULONG TdiBindAddressInfoLength
);
DWORD
ClusnetOfflineNetwork(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId
);
DWORD
ClusnetSetNetworkRestriction(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId,
IN BOOLEAN Restricted,
IN ULONG NewPriority
);
DWORD
ClusnetGetNetworkPriority(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId,
OUT PULONG Priority
);
DWORD
ClusnetSetNetworkPriority(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId,
IN ULONG Priority
);
DWORD
ClusnetGetInterfacePriority(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId,
OUT PULONG InterfacePriority,
OUT PULONG NetworkPriority
);
DWORD
ClusnetSetInterfacePriority(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId,
IN ULONG Priority
);
DWORD
ClusnetGetNodeCommState(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
OUT PCLUSNET_NODE_COMM_STATE State
);
DWORD
ClusnetGetNetworkState(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId,
OUT PCLUSNET_NETWORK_STATE State
);
DWORD
ClusnetGetInterfaceState(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId,
OUT PCLUSNET_INTERFACE_STATE State
);
#ifdef MM_IN_CLUSNET
DWORD
ClusnetFormCluster(
IN HANDLE ControlChannel,
IN ULONG ClockPeriod,
IN ULONG SendHBRate,
IN ULONG RecvHBRate
);
DWORD
ClusnetJoinCluster(
IN HANDLE ControlChannel,
IN CL_NODE_ID JoiningNodeId,
IN CLUSNET_JOIN_PHASE Phase,
IN ULONG JoinTimeout,
IN OUT PVOID * MessageToSend,
OUT PULONG MessageLength,
OUT PULONG DestNodeMask
);
VOID
ClusnetEndJoinCluster(
IN HANDLE ControlChannel,
IN PVOID LastSentMessage
);
DWORD
ClusnetDeliverJoinMessage(
IN HANDLE ControlChannel,
IN PVOID Message,
IN ULONG MessageLength
);
DWORD
ClusnetLeaveCluster(
IN HANDLE ControlChannel
);
DWORD
ClusnetEvictNode(
IN HANDLE ControlChannel,
IN ULONG NodeId
);
#endif // MM_IN_CLUSNET
DWORD
ClusnetGetNodeMembershipState(
IN HANDLE ControlChannel,
IN ULONG NodeId,
OUT CLUSNET_NODE_STATE * State
);
DWORD
ClusnetSetNodeMembershipState(
IN HANDLE ControlChannel,
IN ULONG NodeId,
IN CLUSNET_NODE_STATE State
);
DWORD
ClusnetSetEventMask(
IN HANDLE ControlChannel,
IN CLUSNET_EVENT_TYPE EventMask
);
DWORD
ClusnetGetNextEvent(
IN HANDLE ControlChannel,
OUT PCLUSNET_EVENT Event,
IN LPOVERLAPPED Overlapped OPTIONAL
);
DWORD
ClusnetHalt(
IN HANDLE ControlChannel
);
DWORD
ClusnetSetMemLogging(
IN HANDLE ControlChannel,
IN ULONG NumberOfEntires
);
DWORD
ClusnetSendPoisonPacket(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId
);
DWORD
ClusnetSetOuterscreen(
IN HANDLE ControlChannel,
IN ULONG Outerscreen
);
DWORD
ClusnetRegroupFinished(
IN HANDLE ControlChannel,
IN ULONG NewEpoch
);
DWORD
ClusnetImportSecurityContexts(
IN HANDLE ControlChannel,
IN CL_NODE_ID JoiningNodeId,
IN PWCHAR PackageName,
IN ULONG SignatureSize,
IN PVOID ServerContext,
IN PVOID ClientContext
);
DWORD
ClusnetReserveEndpoint(
IN HANDLE ControlChannel,
IN PWSTR EndpointString
);
DWORD
ClusnetConfigureMulticast(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId,
IN ULONG MulticastNetworkBrand,
IN PVOID MulticastAddress,
IN ULONG MulticastAddressLength,
IN PVOID Key,
IN ULONG KeyLength,
IN PVOID Salt,
IN ULONG SaltLength
);
DWORD
ClusnetGetMulticastReachableSet(
IN HANDLE ControlChannel,
IN CL_NETWORK_ID NetworkId,
OUT ULONG * NodeScreen
);
#if DBG
//
// Test routines - available in debug builds only.
//
DWORD
ClusnetSetDebugMask(
IN HANDLE ControlChannel,
ULONG Mask
);
DWORD
ClusnetOnlinePendingInterface(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId
);
DWORD
ClusnetOnlineInterface(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId
);
DWORD
ClusnetOfflineInterface(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId
);
DWORD
ClusnetFailInterface(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN CL_NETWORK_ID NetworkId
);
DWORD
ClusnetSendMmMsg(
IN HANDLE ControlChannel,
IN CL_NODE_ID NodeId,
IN ULONG Pattern
);
#endif // DBG
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // ndef _CNETAPI_INCLUDED