/*++ Copyright (c) 1997 Microsoft Corporation Module Name: cluxport.h Abstract: Cluster Transport definitions exposed within the Cluster Network Driver. Author: Mike Massa (mikemas) January 3, 1996 Revision History: Who When What -------- -------- ---------------------------------------------- mikemas 01-03-97 created Notes: --*/ #ifndef _CLUXPORT_INCLUDED #define _CLUXPORT_INCLUDED #include #include #include // // // Function Prototypes // // // // Initialization/Shutdown // NTSTATUS CxLoad( IN PUNICODE_STRING RegistryPath ); VOID CxUnload( VOID ); NTSTATUS CxInitialize( VOID ); VOID CxShutdown( VOID ); // // Irp Dispatch // NTSTATUS CxDispatchDeviceControl( IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp ); // // Nodes // NTSTATUS CxRegisterNode( CL_NODE_ID NodeId ); NTSTATUS CxDeregisterNode( CL_NODE_ID NodeId, PIRP Irp, PIO_STACK_LOCATION IrpSp ); NTSTATUS CxOnlineNodeComm( CL_NODE_ID NodeId ); NTSTATUS CxOfflineNodeComm( IN CL_NODE_ID NodeId, IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp ); NTSTATUS CxGetNodeCommState( IN CL_NODE_ID NodeId, OUT PCLUSNET_NODE_COMM_STATE State ); // // Networks // NTSTATUS CxRegisterNetwork( CL_NETWORK_ID NetworkId, ULONG Priority, BOOLEAN Restricted ); NTSTATUS CxDeregisterNetwork( CL_NETWORK_ID NetworkId, PIRP Irp, PIO_STACK_LOCATION IrpSp ); NTSTATUS CxOnlineNetwork( IN CL_NETWORK_ID NetworkId, IN PWCHAR TdiProviderName, IN ULONG TdiProviderNameLength, IN PTRANSPORT_ADDRESS TdiBindAddress, IN ULONG TdiBindAddressLength, IN PWCHAR AdapterName, IN ULONG AdapterNameLength, OUT PTDI_ADDRESS_INFO TdiBindAddressInfo, IN ULONG TdiBindAddressInfoLength, IN PIRP Irp OPTIONAL ); NTSTATUS CxOfflineNetwork( CL_NETWORK_ID NetworkId, PIRP Irp, PIO_STACK_LOCATION IrpSp ); NTSTATUS CxGetNetworkState( IN CL_NETWORK_ID NetworkId, OUT PCLUSNET_NETWORK_STATE State ); NTSTATUS CxSetNetworkRestriction( IN CL_NETWORK_ID NetworkId, IN BOOLEAN Restricted, IN ULONG NewPriority ); NTSTATUS CxSetNetworkPriority( IN CL_NETWORK_ID NetworkId, IN ULONG Priority ); NTSTATUS CxGetNetworkPriority( IN CL_NETWORK_ID NetworkId, OUT PULONG Priority ); // // Interfaces // NTSTATUS CxRegisterInterface( CL_NODE_ID NodeId, CL_NETWORK_ID NetworkId, ULONG Priority, PUWSTR AdapterId, ULONG AdapterIdLength, ULONG TdiAddressLength, PTRANSPORT_ADDRESS TdiAddress, PULONG MediaStatus ); NTSTATUS CxDeregisterInterface( CL_NODE_ID NodeId, CL_NETWORK_ID NetworkId ); NTSTATUS CxSetInterfacePriority( IN CL_NODE_ID NodeId, IN CL_NETWORK_ID NetworkId, IN ULONG Priority ); NTSTATUS CxGetInterfacePriority( IN CL_NODE_ID NodeId, IN CL_NETWORK_ID NetworkId, OUT PULONG InterfacePriority, OUT PULONG NetworkPriority ); NTSTATUS CxGetInterfaceState( IN CL_NODE_ID NodeId, IN CL_NETWORK_ID NetworkId, OUT PCLUSNET_INTERFACE_STATE State ); // // Misc. stuff // NTSTATUS CxGetNodeMembershipState( IN CL_NODE_ID NodeId, OUT PCLUSNET_NODE_STATE State ); NTSTATUS CxSetNodeMembershipState( IN CL_NODE_ID NodeId, IN CLUSNET_NODE_STATE State ); NTSTATUS CxSetOuterscreen( IN ULONG Outerscreen ); VOID CxRegroupFinished( IN ULONG NewEpoch ); NTSTATUS CxImportSecurityContext( IN CL_NODE_ID NodeId, IN PWCHAR PackageName, IN ULONG PackageNameSize, IN ULONG SignatureSize, IN PVOID InboundContext, IN PVOID OutboundContext ); VOID CxDeleteSecurityContext( IN CL_NODE_ID NodeId ); // // Membership Message Interface // typedef VOID (*PCX_SEND_COMPLETE_ROUTINE) ( IN NTSTATUS Status, IN ULONG BytesSent, IN PVOID Context, IN PVOID Buffer ); NTSTATUS CxSendMembershipMessage( IN CL_NODE_ID DestinationNodeId, IN PVOID MessageData, IN USHORT MessageDataLength, IN PCX_SEND_COMPLETE_ROUTINE CompletionRoutine, IN PVOID CompletionContext OPTIONAL ); VOID CxSendPoisonPacket( IN CL_NODE_ID DestinationNodeId, IN PCX_SEND_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, IN PVOID CompletionContext OPTIONAL, IN PIRP Irp OPTIONAL ); NTSTATUS CxSendHeartBeatMessage( IN CL_NODE_ID DestinationNodeId, IN ULONG SeqNumber, IN ULONG AckNumber, IN CL_NETWORK_ID NetworkId ); // // Top-edge TDI Routines // NTSTATUS CxOpenAddress( OUT PCN_FSCONTEXT * CnFsContext, IN TRANSPORT_ADDRESS UNALIGNED * TransportAddress, IN ULONG TransportAddressLength ); NTSTATUS CxCloseAddress( IN PCN_FSCONTEXT CnFsContext ); NTSTATUS CxSetEventHandler( IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp ); NTSTATUS CxQueryInformation( IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp ); NTSTATUS CxSendDatagram( IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp ); NTSTATUS CxReceiveDatagram( IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp ); // // Test APIs // #if DBG NTSTATUS CxOnlinePendingInterface( IN CL_NODE_ID NodeId, IN CL_NETWORK_ID NetworkId ); NTSTATUS CxOnlineInterface( IN CL_NODE_ID NodeId, IN CL_NETWORK_ID NetworkId ); NTSTATUS CxOfflineInterface( IN CL_NODE_ID NodeId, IN CL_NETWORK_ID NetworkId ); NTSTATUS CxFailInterface( IN CL_NODE_ID NodeId, IN CL_NETWORK_ID NetworkId ); #endif // DBG #endif // ndef _CLUXPORT_INCLUDED