|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1999 - 1999 **/ /**********************************************************************/
/*
cluster.h handles starting/stopping cluster resources
FILE HISTORY: */
#ifndef _CLUSTER_H
#define _CLUSTER_H
#ifndef _DYNAMLNK_H
#include "dynamlnk.h"
#endif
#define MAX_NAME_SIZE 256
typedef enum _ClusApiIndex { CLUS_GET_NODE_CLUSTER_STATE = 0, CLUS_OPEN_CLUSTER, CLUS_CLUSTER_OPEN_ENUM, CLUS_CLUSTER_ENUM, CLUS_OPEN_CLUSTER_RESOURCE, CLUS_ONLINE_CLUSTER_RESOURCE, CLUS_OFFLINE_CLUSTER_RESOURCE, CLUS_GET_CLUSTER_RESOURCE_STATE, CLUS_CLOSE_CLUSTER_RESOURCE, CLUS_CLUSTER_CLOSE_ENUM, CLUS_CLOSE_CLUSTER, CLUS_CLUSTER_RESOURCE_CONTROL, CLUS_CLUSTER_RESOURCE_OPEN_ENUM, CLUS_CLUSTER_RESOURCE_ENUM, CLUS_CLUSTER_RESOURCE_CLOSE_ENUM, CLUS_GET_CLUSTER_INFORMATION };
// not subject to localization
static LPCSTR g_apchClusFunctionNames[] = { "GetNodeClusterState", "OpenCluster", "ClusterOpenEnum", "ClusterEnum", "OpenClusterResource", "OnlineClusterResource", "OfflineClusterResource", "GetClusterResourceState", "CloseClusterResource", "ClusterCloseEnum", "CloseCluster", "ClusterResourceControl", "ClusterResourceOpenEnum", "ClusterResourceEnum", "ClusterResourceCloseEnum", "GetClusterInformation", NULL };
// not subject to localization
extern DynamicDLL g_ClusDLL;
typedef LONG (*GETNODECLUSTERSTATE) (LPCWSTR, LPDWORD); typedef HCLUSTER (*OPENCLUSTER) (LPCWSTR); typedef HCLUSENUM (*CLUSTEROPENENUM) (HCLUSTER, DWORD); typedef DWORD (*CLUSTERENUM) (HCLUSENUM, DWORD, LPDWORD, LPWSTR, LPDWORD); typedef HRESOURCE (*OPENCLUSTERRESOURCE) (HCLUSTER, LPCWSTR); typedef DWORD (*ONLINECLUSTERRESOURCE) (HRESOURCE); typedef DWORD (*OFFLINECLUSTERRESOURCE) (HRESOURCE); typedef CLUSTER_RESOURCE_STATE (*GETCLUSTERRESOURCESTATE) (HRESOURCE, LPWSTR, LPDWORD, LPWSTR, LPDWORD); typedef BOOL (*CLOSECLUSTERRESOURCE) (HRESOURCE); typedef DWORD (*CLUSTERCLOSEENUM) (HCLUSENUM); typedef BOOL (*CLOSECLUSTER) (HCLUSTER); typedef DWORD (*CLUSTERRESOURCECONTROL) (HRESOURCE, HNODE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPVOID); typedef HRESENUM (*CLUSTERRESOURCEOPENENUM) (HRESOURCE, DWORD); typedef DWORD (*CLUSTERRESOURCEENUM) (HRESENUM, DWORD, LPDWORD, LPWSTR, LPDWORD); typedef DWORD (*CLUSTERRESOURCECLOSEENUM) (HRESENUM); typedef DWORD (*GETCLUSTERINFORMATION) (HCLUSTER, LPWSTR, LPDWORD, LPCLUSTERVERSIONINFO);
// Resource utils for cluster support
typedef enum _ResUtilsIndex { RESUTILS_FIND_DWORD_PROPERTY = 0, RESUTILS_FIND_SZ_PROPERTY, };
// not subject to localization
static LPCSTR g_apchResUtilsFunctionNames[] = { "ResUtilFindDwordProperty", "ResUtilFindSzProperty", NULL, };
typedef DWORD (*RESUTILSFINDDWORDPROPERTY)(PVOID, DWORD, LPCWSTR, LPDWORD); typedef DWORD (*RESUTILSFINDSZPROPERTY)(PVOID, DWORD, LPCWSTR, LPWSTR *); // not subject to localization
extern DynamicDLL g_ResUtilsDLL;
DWORD ControlClusterService(LPCTSTR pszComputer, LPCTSTR pszResourceType, LPCTSTR pszServiceDesc, BOOL fStart); BOOL FIsComputerInRunningCluster(LPCTSTR pszComputer); DWORD GetClusterResourceIp(LPCTSTR pszComputer, LPCTSTR pszResourceType, CString & strAddress);
DWORD StartResource(LPCTSTR pszComputer, HRESOURCE hResource, LPCTSTR pszServiceDesc); DWORD StopResource(LPCTSTR pszComputer, HRESOURCE hResource, LPCTSTR pszServiceDesc);
DWORD GetResourceType(HRESOURCE hRes, LPWSTR * ppszName, DWORD dwBufSizeIn, DWORD * pdwBufSizeOut); DWORD GetResourceIpAddress(HRESOURCE hRes, CString & strAddress);
DWORD FindSzProp(LPVOID pvProps, DWORD cbProps, LPCWSTR pszTarget, LPWSTR * ppszOut);
DWORD GetClusterInfo(LPCTSTR pszClusIp, CString &strClusName, DWORD * pdwClusIp);
#endif _CLUSTER_H
|