2025-04-27 07:49:33 -04:00

250 lines
4.4 KiB
C

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
cluxport.h
Abstract:
Cluster Transport public interface definition.
Author:
Mike Massa (mikemas) 18-April-1996
Revision History:
--*/
#ifndef _CX_INCLUDED
#define _CX_INCLUDED
//
// Removed comment to make these official. This file
// does not appear to be being used. Nor do these
// constants. They are being left in only to avoid any
// unexpected breaking issues.
// EBK - 5/8/2000 Whistler bug # 83162
#define CX_ERROR_BASE 13000
#define ERROR_INCOMPATIBLE_TRANSPORT_VERSION (CX_ERROR_BASE + 1)
#define ERROR_OBJECT_NAME_NOT_FOUND (CX_ERROR_BASE + 2)
#define ERROR_NODE_NOT_FOUND (CX_ERROR_BASE + 3)
//
//
// Constants
//
//
//
//
// Types
//
//
typedef
VOID
(*CX_NODE_FAILURE_HANDLER)(
IN CL_NODE_ID NodeId,
IN LPVOID NodeFailureContext
);
typedef
VOID
(*CX_DATAGRAM_RECEIVE_HANDLER)(
IN CL_NODE_ID SourceNode,
IN LPVOID Data,
IN DWORD DataLength
);
typedef struct {
CX_NODE_FAILURE_HANDLER NodeFailureHandler;
LPVOID NodeFailureContext;
} CX_INIT_INFO, *PCX_INIT_INFO;
typedef struct {
LPWSTR RpcProtSeq;
LPWSTR RpcClientProviderDll;
LPWSTR RpcServerProviderDll;
} CX_TRANSPORT_INFO, *PCX_TRANSPORT_INFO;;
typedef enum {
CxPublicInterconnect,
CxPrivateInterconnect
} CX_INTERCONNECT_TYPE;
typedef struct {
LPWSTR InterconnectName;
CX_INTERCONNECT_TYPE Type;
LPWSTR AdapterName;
LPWSTR TransportName;
} CX_INTERCONNECT_INFO, *PCX_INTERCONNECT_INFO;
typedef struct {
LPWSTR InterfaceName;
LPWSTR InterconnectName;
LPWSTR TransportName;
LPWSTR AddressName;
} CX_INTERFACE_INFO, *PCX_INTERFACE_INFO;
//
//
// Routines
//
//
DWORD
CxInitialize(
IN PCX_INIT_INFO InitInfo
);
VOID
CxShutdown(
VOID
);
DWORD
CxRegisterTransport(
IN LPWSTR TransportName,
IN PCX_TRANSPORT_INFO TransportInfo
);
DWORD
CxDeregisterTransport(
IN LPWSTR TransportName
);
VOID
CxDeregisterAllTransports(
IN VOID
);
DWORD
CxRegisterInterconnect(
IN PCX_INTERCONNECT_INFO InterconnectInfo
);
DWORD
CxDeregisterInterconnect(
IN LPWSTR InterconnectName
);
VOID
CxDeregisterAllInterconnects(
VOID
);
DWORD
CxEnumInterconnects(
IN OUT PCX_INTERCONNECT_INFO InterconnectInfo,
IN OUT LPDWORD InterconnectInfoSize,
OUT LPDWORD InterconnectCount
);
DWORD
CxRegisterNode(
IN LPWSTR NodeName,
IN CL_NODE_ID NodeId
);
DWORD
CxDeregisterNode(
IN CL_NODE_ID NodeId
);
VOID
CxDeregisterAllNodes(
VOID
);
DWORD
CxRegisterInterface(
IN LPWSTR InterfaceName,
IN CL_NODE_ID NodeId,
IN LPWSTR InterconnectName,
IN LPWSTR TransportName,
IN LPWSTR InterfaceAddress
);
DWORD
CxDeregisterInterface(
IN LPWSTR InterfaceName,
IN CL_NODE_ID NodeId
);
DWORD
CxEnumInterfaces(
IN CL_NODE_ID NodeId,
IN OUT PCX_INTERFACE_INFO InterfaceInfo,
IN OUT LPDWORD InterfaceInfoSize,
OUT LPDWORD InterfaceCount
);
DWORD
CxDestroyNodeInterfaces(
IN CL_NODE_ID NodeId
);
DWORD
CxLoadTransports(
VOID
);
VOID
CxUnloadTransports(
VOID
);
DWORD
CxChangeNodeState(
IN CL_NODE_ID NodeId,
IN CLUSTER_NODE_STATE NewState
);
CLUSTER_NODE_STATE
CxGetNodeState(
IN CL_NODE_ID NodeId
);
HANDLE
CxOpenDatagramEndpoint(
IN LPWSTR EndpointName,
IN CX_DATAGRAM_RECEIVE_HANDLER ReceiveHandler,
IN DWORD MaximumDatagramSize
);
VOID
CxCloseDatagramEndpoint(
IN HANDLE EndpointHandle
);
HANDLE
CxOpenDatagramAddress(
IN CL_NODE_ID NodeId,
IN LPWSTR EndpointName
);
VOID
CxCloseDatagramAddress(
IN HANDLE AddressHandle
);
DWORD
CxSendDatagram(
IN HANDLE LocalEndpoint,
IN HANDLE ServerAddress,
IN LPVOID Data,
IN DWORD DataLength
);
#endif // _CX_INCLUDED