///////////////////////////////////////////////////////////////////////////// // // Copyright (c) 1997-2001 Microsoft Corporation // // Module Name: // ClusWrap.h // // Description: // Wrapper functions for Cluster APIs. // // Author: // Galen Barbee (galenb) 15-Aug-1998 // // Notes: // ///////////////////////////////////////////////////////////////////////////// #ifndef __CLUSWRAP_H #define __CLUSWRAP_H #include "clusapi.h" #include "clstrcmp.h" #define CLUS_DEFAULT_TIMEOUT 10000 ////////////////////////////////////////////////////////////////////////// // Standard cluster API wrappers. ////////////////////////////////////////////////////////////////////////// DWORD WINAPI WrapGetClusterInformation( IN HCLUSTER hCluster, OUT LPWSTR * ppwszClusterName, OUT OPTIONAL LPCLUSTERVERSIONINFO pClusterInfo ); DWORD WINAPI WrapGetClusterQuorumResource( IN HCLUSTER hCluster, OUT LPWSTR * ppwszResourceName, OUT LPWSTR * ppwszDeviceName, OUT LPDWORD pdwMaxQuorumLogSize ); DWORD WINAPI WrapClusterEnum( IN HCLUSENUM hEnum, IN DWORD dwIndex, OUT LPDWORD pdwType, OUT LPWSTR * plpwszName ); DWORD WINAPI WrapGetClusterNodeId( IN HNODE hNode, OUT LPWSTR * ppwszNodeId ); CLUSTER_GROUP_STATE WINAPI WrapGetClusterGroupState( IN HGROUP hGroup, OUT OPTIONAL LPWSTR * ppwszNodeName = NULL ); DWORD WINAPI WrapClusterGroupEnum( IN HGROUPENUM hGroupEnum, IN DWORD dwIndex, OUT LPDWORD pdwType, OUT LPWSTR * ppwszGroupName ); DWORD WINAPI WrapClusterNodeEnum( IN HNODEENUM hEnum, IN DWORD dwIndex, OUT LPDWORD pdwType, OUT LPWSTR * ppwszNodeName ); DWORD WINAPI WrapClusterNetworkEnum( IN HNETWORKENUM hEnum, IN DWORD dwIndex, OUT LPDWORD pdwType, OUT LPWSTR * ppwszNetworkName ); CLUSTER_RESOURCE_STATE WINAPI WrapGetClusterResourceState( IN HRESOURCE hResource, OUT OPTIONAL LPWSTR * ppwszNodeName, OUT OPTIONAL LPWSTR * ppwszGroupName ); DWORD WINAPI WrapClusterResourceEnum( IN HRESENUM hResEnum, IN DWORD dwIndex, OUT LPDWORD pdwType, OUT LPWSTR * ppwszResourceName ); DWORD WINAPI WrapClusterResourceTypeEnum( IN HRESTYPEENUM hResEnum, IN DWORD dwIndex, OUT LPDWORD pdwType, OUT LPWSTR * ppwszResTyoeName ); HRESULT HrWrapOnlineClusterResource( HCLUSTER hCluster, HRESOURCE hResource, DWORD nWait = 0, long * pbPending = NULL ); DWORD ScWrapOnlineClusterResource( IN HCLUSTER hCluster, IN HRESOURCE hResource, IN DWORD nWait = 0, OUT long * pbPending = NULL ); HRESULT HrWrapOfflineClusterResource( HCLUSTER hCluster, HRESOURCE hResource, DWORD nWait = 0, long * pbPending = NULL ); DWORD ScWrapOfflineClusterResource( IN HCLUSTER hCluster, IN HRESOURCE hResource, IN DWORD nWait = 0, OUT long * pbPending = NULL ); HRESULT HrWrapOnlineClusterGroup( IN HCLUSTER hCluster, IN HGROUP hGroup, IN HNODE hNode = NULL, IN DWORD nWait = 0, OUT long * pbPending = NULL ); DWORD ScWrapOnlineClusterGroup( IN HCLUSTER hCluster, IN HGROUP hGroup, IN HNODE hNode = NULL, IN DWORD nWait = 0, OUT long * pbPending = NULL ); HRESULT HrWrapOfflineClusterGroup( IN HCLUSTER hCluster, IN HGROUP hGroup, IN DWORD nWait = 0, OUT long * pbPending = NULL ); DWORD ScWrapOfflineClusterGroup( IN HCLUSTER hCluster, IN HGROUP hGroup, IN DWORD nWait = 0, OUT long * pbPending = NULL ); HRESULT HrWrapMoveClusterGroup( IN HCLUSTER hCluster, IN HGROUP hGroup, IN HNODE hNode = NULL, IN DWORD nWait = 0, OUT long * pbPending = NULL ); DWORD ScWrapMoveClusterGroup( IN HCLUSTER hCluster, IN HGROUP hGroup, IN HNODE hNode = NULL, IN DWORD nWait = 0, OUT long * pbPending = NULL ); DWORD ScWrapClusterResourceControlGet( HRESOURCE hResourceIn , HNODE hHostNodeIn , DWORD dwControlCodeIn , LPVOID lpInBufferIn , DWORD cbInBufferSizeIn , LPVOID * lppOutBufferOut , LPDWORD lpcbBytesReturnedOut ); //////////////////////////////////////////////////////////////////// // Custom helper functions/classes/etc. //////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// //++ // // class CClusterNotifyPort // // Description: // This class is a wrapper for the cluster notify port // // Inheritance: // CObjectProperty // //-- ///////////////////////////////////////////////////////////////////////////// class CClusterNotifyPort { public: CClusterNotifyPort(); ~CClusterNotifyPort(); DWORD Create( HCHANGE hChange = (HCHANGE) INVALID_HANDLE_VALUE, HCLUSTER hCluster = (HCLUSTER) INVALID_HANDLE_VALUE, DWORD dwFilter = 0, DWORD_PTR dwNotifyKey = 0 ); DWORD Close(); DWORD Register( DWORD dwFilterType, HANDLE hObject, DWORD_PTR dwNotifyKey = 0 ); DWORD GetNotify(); DWORD_PTR m_dwNotifyKey; DWORD m_dwFilterType; WCHAR* m_szName; DWORD m_cchName; protected: HCHANGE m_hChange; }; //*** class CClusterNotifyPort #endif __CLUSWRAP_H