/*++ 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