460 lines
8.8 KiB
C
460 lines
8.8 KiB
C
|
/*++
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|