| 1 | /** | 
 
 
 
 
 | 2 | * This file has no copyright assigned and is placed in the Public Domain. | 
 
 
 
 
 | 3 | * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 
 
 
 
 | 5 | */ | 
 
 
 
 
 | 6 | #ifndef _CLUSTER_API_ | 
 
 
 
 
 | 7 | #define _CLUSTER_API_ | 
 
 
 
 
 | 8 |  | 
 
 
 
 
 | 9 | #define CLUSAPI_VERSION 0x0500 | 
 
 
 
 
 | 10 |  | 
 
 
 
 
 | 11 | #ifdef __cplusplus | 
 
 
 
 
 | 12 | extern "C" { | 
 
 
 
 
 | 13 | #endif | 
 
 
 
 
 | 14 |  | 
 
 
 
 
 | 15 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 16 | typedef struct _HCLUSTER *HCLUSTER; | 
 
 
 
 
 | 17 | typedef struct _HNODE *HNODE; | 
 
 
 
 
 | 18 | typedef struct _HRESOURCE *HRESOURCE; | 
 
 
 
 
 | 19 | typedef struct _HGROUP *HGROUP; | 
 
 
 
 
 | 20 | typedef struct _HNETWORK *HNETWORK; | 
 
 
 
 
 | 21 | typedef struct _HNETINTERFACE *HNETINTERFACE; | 
 
 
 
 
 | 22 | typedef struct _HCHANGE *HCHANGE; | 
 
 
 
 
 | 23 | typedef struct _HCLUSENUM *HCLUSENUM; | 
 
 
 
 
 | 24 | typedef struct _HGROUPENUM *HGROUPENUM; | 
 
 
 
 
 | 25 | typedef struct _HRESENUM *HRESENUM; | 
 
 
 
 
 | 26 | typedef struct _HNETWORKENUM *HNETWORKENUM; | 
 
 
 
 
 | 27 | typedef struct _HNODEENUM *HNODEENUM; | 
 
 
 
 
 | 28 | typedef struct _HRESTYPEENUM *HRESTYPEENUM; | 
 
 
 
 
 | 29 | #endif | 
 
 
 
 
 | 30 |  | 
 
 
 
 
 | 31 | #define MAX_CLUSTERNAME_LENGTH MAX_COMPUTERNAME_LENGTH | 
 
 
 
 
 | 32 |  | 
 
 
 
 
 | 33 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 34 |  | 
 
 
 
 
 | 35 | typedef enum CLUSTER_QUORUM_TYPE { | 
 
 
 
 
 | 36 | OperationalQuorum,ModifyQuorum | 
 
 
 
 
 | 37 | } CLUSTER_QUORUM_TYPE; | 
 
 
 
 
 | 38 |  | 
 
 
 
 
 | 39 | typedef struct CLUSTERVERSIONINFO_NT4 { | 
 
 
 
 
 | 40 | DWORD dwVersionInfoSize; | 
 
 
 
 
 | 41 | WORD MajorVersion; | 
 
 
 
 
 | 42 | WORD MinorVersion; | 
 
 
 
 
 | 43 | WORD BuildNumber; | 
 
 
 
 
 | 44 | WCHAR szVendorId[64]; | 
 
 
 
 
 | 45 | WCHAR szCSDVersion[64]; | 
 
 
 
 
 | 46 | } CLUSTERVERSIONINFO_NT4,*PCLUSTERVERSIONINFO_NT4; | 
 
 
 
 
 | 47 |  | 
 
 
 
 
 | 48 | typedef struct CLUSTERVERSIONINFO { | 
 
 
 
 
 | 49 | DWORD dwVersionInfoSize; | 
 
 
 
 
 | 50 | WORD MajorVersion; | 
 
 
 
 
 | 51 | WORD MinorVersion; | 
 
 
 
 
 | 52 | WORD BuildNumber; | 
 
 
 
 
 | 53 | WCHAR szVendorId[64]; | 
 
 
 
 
 | 54 | WCHAR szCSDVersion[64]; | 
 
 
 
 
 | 55 | DWORD dwClusterHighestVersion; | 
 
 
 
 
 | 56 | DWORD dwClusterLowestVersion; | 
 
 
 
 
 | 57 | DWORD dwFlags; | 
 
 
 
 
 | 58 | DWORD dwReserved; | 
 
 
 
 
 | 59 | } CLUSTERVERSIONINFO,*LPCLUSTERVERSIONINFO,*PCLUSTERVERSIONINFO; | 
 
 
 
 
 | 60 |  | 
 
 
 
 
 | 61 | typedef struct CLUS_STARTING_PARAMS { | 
 
 
 
 
 | 62 | DWORD dwSize; | 
 
 
 
 
 | 63 | WINBOOL bForm; | 
 
 
 
 
 | 64 | WINBOOL bFirst; | 
 
 
 
 
 | 65 | } CLUS_STARTING_PARAMS,*PCLUS_STARTING_PARAMS; | 
 
 
 
 
 | 66 |  | 
 
 
 
 
 | 67 | #define CLUSTER_VERSION_FLAG_MIXED_MODE 0x00000001 | 
 
 
 
 
 | 68 |  | 
 
 
 
 
 | 69 | #define NT4_MAJOR_VERSION 1 | 
 
 
 
 
 | 70 | #define NT4SP4_MAJOR_VERSION 2 | 
 
 
 
 
 | 71 | #define NT5_MAJOR_VERSION 3 | 
 
 
 
 
 | 72 | #define NT51_MAJOR_VERSION 4 | 
 
 
 
 
 | 73 |  | 
 
 
 
 
 | 74 | #define CLUSTER_VERSION_UNKNOWN 0xFFFFFFFF | 
 
 
 
 
 | 75 |  | 
 
 
 
 
 | 76 | #define CLUSTER_MAKE_VERSION(_maj,_min) (((_maj) << 16) | (_min)) | 
 
 
 
 
 | 77 | #define CLUSTER_GET_MAJOR_VERSION(_ver) ((_ver) >> 16) | 
 
 
 
 
 | 78 | #define CLUSTER_GET_MINOR_VERSION(_ver) ((_ver) & 0xFFFF) | 
 
 
 
 
 | 79 |  | 
 
 
 
 
 | 80 | #define CLUSTER_INSTALLED 0x00000001 | 
 
 
 
 
 | 81 | #define CLUSTER_CONFIGURED 0x00000002 | 
 
 
 
 
 | 82 | #define CLUSTER_RUNNING 0x00000010 | 
 
 
 
 
 | 83 |  | 
 
 
 
 
 | 84 | typedef enum NODE_CLUSTER_STATE { | 
 
 
 
 
 | 85 | ClusterStateNotInstalled = 0x00000000,ClusterStateNotConfigured = CLUSTER_INSTALLED,ClusterStateNotRunning = CLUSTER_INSTALLED | CLUSTER_CONFIGURED, | 
 
 
 
 
 | 86 | ClusterStateRunning = CLUSTER_INSTALLED | CLUSTER_CONFIGURED | CLUSTER_RUNNING | 
 
 
 
 
 | 87 | } NODE_CLUSTER_STATE; | 
 
 
 
 
 | 88 |  | 
 
 
 
 
 | 89 | #define CLUSCTL_RESOURCE_STATE_CHANGE_REASON_VERSION_1 1 | 
 
 
 
 
 | 90 |  | 
 
 
 
 
 | 91 | typedef enum CLUSTER_RESOURCE_STATE_CHANGE_REASON { | 
 
 
 
 
 | 92 | eResourceStateChangeReasonUnknown = 0,eResourceStateChangeReasonMove,eResourceStateChangeReasonFailover,eResourceStateChangeReasonFailedMove, | 
 
 
 
 
 | 93 | eResourceStateChangeReasonShutdown,eResourceStateChangeReasonRundown | 
 
 
 
 
 | 94 | } CLUSTER_RESOURCE_STATE_CHANGE_REASON; | 
 
 
 
 
 | 95 |  | 
 
 
 
 
 | 96 | typedef struct _CLUSCTL_RESOURCE_STATE_CHANGE_REASON_STRUCT { | 
 
 
 
 
 | 97 | DWORD dwSize; | 
 
 
 
 
 | 98 | DWORD dwVersion; | 
 
 
 
 
 | 99 | CLUSTER_RESOURCE_STATE_CHANGE_REASON eReason; | 
 
 
 
 
 | 100 | } CLUSCTL_RESOURCE_STATE_CHANGE_REASON_STRUCT,*PCLUSCTL_RESOURCE_STATE_CHANGE_REASON_STRUCT; | 
 
 
 
 
 | 101 | #endif | 
 
 
 
 
 | 102 |  | 
 
 
 
 
 | 103 | #define CLUSAPI_READ_ACCESS __MSABI_LONG(0x00000001) | 
 
 
 
 
 | 104 | #define CLUSAPI_CHANGE_ACCESS __MSABI_LONG(0x00000002) | 
 
 
 
 
 | 105 | #define CLUSAPI_NO_ACCESS __MSABI_LONG(0x00000004) | 
 
 
 
 
 | 106 | #define CLUSAPI_ALL_ACCESS (CLUSAPI_READ_ACCESS | CLUSAPI_CHANGE_ACCESS) | 
 
 
 
 
 | 107 |  | 
 
 
 
 
 | 108 | typedef enum CLUSTER_SET_PASSWORD_FLAGS { | 
 
 
 
 
 | 109 | CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1 | 
 
 
 
 
 | 110 | } CLUSTER_SET_PASSWORD_FLAGS; | 
 
 
 
 
 | 111 |  | 
 
 
 
 
 | 112 | typedef struct CLUSTER_SET_PASSWORD_STATUS { | 
 
 
 
 
 | 113 | DWORD NodeId; | 
 
 
 
 
 | 114 | BOOLEAN SetAttempted; | 
 
 
 
 
 | 115 | DWORD ReturnStatus; | 
 
 
 
 
 | 116 | } CLUSTER_SET_PASSWORD_STATUS,*PCLUSTER_SET_PASSWORD_STATUS; | 
 
 
 
 
 | 117 |  | 
 
 
 
 
 | 118 | DWORD WINAPI GetNodeClusterState(LPCWSTR lpszNodeName,DWORD *pdwClusterState); | 
 
 
 
 
 | 119 | HCLUSTER WINAPI OpenCluster(LPCWSTR lpszClusterName); | 
 
 
 
 
 | 120 | WINBOOL WINAPI CloseCluster(HCLUSTER hCluster); | 
 
 
 
 
 | 121 | DWORD WINAPI SetClusterName(HCLUSTER hCluster,LPCWSTR lpszNewClusterName); | 
 
 
 
 
 | 122 | DWORD WINAPI GetClusterInformation(HCLUSTER hCluster,LPWSTR lpszClusterName,LPDWORD lpcchClusterName,LPCLUSTERVERSIONINFO lpClusterInfo); | 
 
 
 
 
 | 123 | DWORD WINAPI GetClusterQuorumResource(HCLUSTER hCluster,LPWSTR lpszResourceName,LPDWORD lpcchResourceName,LPWSTR lpszDeviceName,LPDWORD lpcchDeviceName,LPDWORD lpdwMaxQuorumLogSize); | 
 
 
 
 
 | 124 | DWORD WINAPI SetClusterQuorumResource(HRESOURCE hResource,LPCWSTR lpszDeviceName,DWORD dwMaxQuoLogSize); | 
 
 
 
 
 | 125 | DWORD WINAPI BackupClusterDatabase(HCLUSTER hCluster,LPCWSTR lpszPathName); | 
 
 
 
 
 | 126 | DWORD WINAPI RestoreClusterDatabase(LPCWSTR lpszPathName,WINBOOL bForce,LPCWSTR lpszQuorumDriveLetter); | 
 
 
 
 
 | 127 | DWORD WINAPI SetClusterNetworkPriorityOrder(HCLUSTER hCluster,DWORD NetworkCount,HNETWORK NetworkList[]); | 
 
 
 
 
 | 128 | DWORD WINAPI SetClusterServiceAccountPassword(LPCWSTR lpszClusterName,LPCWSTR lpszNewPassword,DWORD dwFlags,PCLUSTER_SET_PASSWORD_STATUS lpReturnStatusBuffer,LPDWORD lpcbReturnStatusBufferSize); | 
 
 
 
 
 | 129 | DWORD WINAPI ClusterControl(HCLUSTER hCluster,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned); | 
 
 
 
 
 | 130 |  | 
 
 
 
 
 | 131 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 132 |  | 
 
 
 
 
 | 133 | typedef enum CLUSTER_CHANGE { | 
 
 
 
 
 | 134 | CLUSTER_CHANGE_NODE_STATE = 0x00000001,CLUSTER_CHANGE_NODE_DELETED = 0x00000002,CLUSTER_CHANGE_NODE_ADDED = 0x00000004, | 
 
 
 
 
 | 135 | CLUSTER_CHANGE_NODE_PROPERTY = 0x00000008,CLUSTER_CHANGE_REGISTRY_NAME = 0x00000010,CLUSTER_CHANGE_REGISTRY_ATTRIBUTES = 0x00000020, | 
 
 
 
 
 | 136 | CLUSTER_CHANGE_REGISTRY_VALUE = 0x00000040,CLUSTER_CHANGE_REGISTRY_SUBTREE = 0x00000080,CLUSTER_CHANGE_RESOURCE_STATE = 0x00000100, | 
 
 
 
 
 | 137 | CLUSTER_CHANGE_RESOURCE_DELETED = 0x00000200,CLUSTER_CHANGE_RESOURCE_ADDED = 0x00000400,CLUSTER_CHANGE_RESOURCE_PROPERTY = 0x00000800, | 
 
 
 
 
 | 138 | CLUSTER_CHANGE_GROUP_STATE = 0x00001000,CLUSTER_CHANGE_GROUP_DELETED = 0x00002000,CLUSTER_CHANGE_GROUP_ADDED = 0x00004000, | 
 
 
 
 
 | 139 | CLUSTER_CHANGE_GROUP_PROPERTY = 0x00008000,CLUSTER_CHANGE_RESOURCE_TYPE_DELETED = 0x00010000,CLUSTER_CHANGE_RESOURCE_TYPE_ADDED = 0x00020000, | 
 
 
 
 
 | 140 | CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY = 0x00040000,CLUSTER_CHANGE_CLUSTER_RECONNECT = 0x00080000,CLUSTER_CHANGE_NETWORK_STATE = 0x00100000, | 
 
 
 
 
 | 141 | CLUSTER_CHANGE_NETWORK_DELETED = 0x00200000,CLUSTER_CHANGE_NETWORK_ADDED = 0x00400000,CLUSTER_CHANGE_NETWORK_PROPERTY = 0x00800000, | 
 
 
 
 
 | 142 | CLUSTER_CHANGE_NETINTERFACE_STATE = 0x01000000,CLUSTER_CHANGE_NETINTERFACE_DELETED = 0x02000000,CLUSTER_CHANGE_NETINTERFACE_ADDED = 0x04000000, | 
 
 
 
 
 | 143 | CLUSTER_CHANGE_NETINTERFACE_PROPERTY = 0x08000000,CLUSTER_CHANGE_QUORUM_STATE = 0x10000000,CLUSTER_CHANGE_CLUSTER_STATE = 0x20000000, | 
 
 
 
 
 | 144 | CLUSTER_CHANGE_CLUSTER_PROPERTY = 0x40000000,CLUSTER_CHANGE_HANDLE_CLOSE = 0x80000000, | 
 
 
 
 
 | 145 | CLUSTER_CHANGE_ALL = (CLUSTER_CHANGE_NODE_STATE | CLUSTER_CHANGE_NODE_DELETED | CLUSTER_CHANGE_NODE_ADDED | CLUSTER_CHANGE_NODE_PROPERTY | CLUSTER_CHANGE_REGISTRY_NAME | CLUSTER_CHANGE_REGISTRY_ATTRIBUTES | CLUSTER_CHANGE_REGISTRY_VALUE | CLUSTER_CHANGE_REGISTRY_SUBTREE | CLUSTER_CHANGE_RESOURCE_STATE | CLUSTER_CHANGE_RESOURCE_DELETED | CLUSTER_CHANGE_RESOURCE_ADDED | CLUSTER_CHANGE_RESOURCE_PROPERTY | CLUSTER_CHANGE_GROUP_STATE | CLUSTER_CHANGE_GROUP_DELETED | CLUSTER_CHANGE_GROUP_ADDED | CLUSTER_CHANGE_GROUP_PROPERTY | CLUSTER_CHANGE_RESOURCE_TYPE_DELETED | CLUSTER_CHANGE_RESOURCE_TYPE_ADDED | CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY | CLUSTER_CHANGE_NETWORK_STATE | CLUSTER_CHANGE_NETWORK_DELETED | CLUSTER_CHANGE_NETWORK_ADDED | CLUSTER_CHANGE_NETWORK_PROPERTY | CLUSTER_CHANGE_NETINTERFACE_STATE | CLUSTER_CHANGE_NETINTERFACE_DELETED | CLUSTER_CHANGE_NETINTERFACE_ADDED | CLUSTER_CHANGE_NETINTERFACE_PROPERTY | CLUSTER_CHANGE_QUORUM_STATE | CLUSTER_CHANGE_CLUSTER_STATE | CLUSTER_CHANGE_CLUSTER_PROPERTY | CLUSTER_CHANGE_CLUSTER_RECONNECT | CLUSTER_CHANGE_HANDLE_CLOSE) | 
 
 
 
 
 | 146 | } CLUSTER_CHANGE; | 
 
 
 
 
 | 147 | #endif | 
 
 
 
 
 | 148 |  | 
 
 
 
 
 | 149 | HCHANGE WINAPI CreateClusterNotifyPort(HCHANGE hChange,HCLUSTER hCluster,DWORD dwFilter,DWORD_PTR dwNotifyKey); | 
 
 
 
 
 | 150 | DWORD WINAPI RegisterClusterNotify(HCHANGE hChange,DWORD dwFilterType,HANDLE hObject,DWORD_PTR dwNotifyKey); | 
 
 
 
 
 | 151 | DWORD WINAPI GetClusterNotify(HCHANGE hChange,DWORD_PTR *lpdwNotifyKey,LPDWORD lpdwFilterType,LPWSTR lpszName,LPDWORD lpcchName,DWORD dwMilliseconds); | 
 
 
 
 
 | 152 | WINBOOL WINAPI CloseClusterNotifyPort(HCHANGE hChange); | 
 
 
 
 
 | 153 |  | 
 
 
 
 
 | 154 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 155 | typedef enum CLUSTER_ENUM { | 
 
 
 
 
 | 156 | CLUSTER_ENUM_NODE = 0x00000001,CLUSTER_ENUM_RESTYPE = 0x00000002,CLUSTER_ENUM_RESOURCE = 0x00000004,CLUSTER_ENUM_GROUP = 0x00000008, | 
 
 
 
 
 | 157 | CLUSTER_ENUM_NETWORK = 0x00000010,CLUSTER_ENUM_NETINTERFACE = 0x00000020,CLUSTER_ENUM_INTERNAL_NETWORK = 0x80000000, | 
 
 
 
 
 | 158 | CLUSTER_ENUM_ALL = (CLUSTER_ENUM_NODE | CLUSTER_ENUM_RESTYPE | CLUSTER_ENUM_RESOURCE | CLUSTER_ENUM_GROUP | CLUSTER_ENUM_NETWORK | CLUSTER_ENUM_NETINTERFACE) | 
 
 
 
 
 | 159 | } CLUSTER_ENUM; | 
 
 
 
 
 | 160 | #endif | 
 
 
 
 
 | 161 |  | 
 
 
 
 
 | 162 | HCLUSENUM WINAPI ClusterOpenEnum(HCLUSTER hCluster,DWORD dwType); | 
 
 
 
 
 | 163 | DWORD WINAPI ClusterGetEnumCount(HCLUSENUM hEnum); | 
 
 
 
 
 | 164 | DWORD WINAPI ClusterEnum(HCLUSENUM hEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName); | 
 
 
 
 
 | 165 | DWORD WINAPI ClusterCloseEnum(HCLUSENUM hEnum); | 
 
 
 
 
 | 166 |  | 
 
 
 
 
 | 167 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 168 | typedef enum CLUSTER_NODE_ENUM { | 
 
 
 
 
 | 169 | CLUSTER_NODE_ENUM_NETINTERFACES   = 0x00000001, | 
 
 
 
 
 | 170 | CLUSTER_NODE_ENUM_GROUPS          = 0x00000002, | 
 
 
 
 
 | 171 | CLUSTER_NODE_ENUM_ALL             = (CLUSTER_NODE_ENUM_NETINTERFACES|CLUSTER_NODE_ENUM_GROUPS) | 
 
 
 
 
 | 172 | } CLUSTER_NODE_ENUM; | 
 
 
 
 
 | 173 |  | 
 
 
 
 
 | 174 | typedef enum CLUSTER_NODE_STATE { | 
 
 
 
 
 | 175 | ClusterNodeStateUnknown = -1,ClusterNodeUp,ClusterNodeDown,ClusterNodePaused,ClusterNodeJoining | 
 
 
 
 
 | 176 | } CLUSTER_NODE_STATE; | 
 
 
 
 
 | 177 | #endif | 
 
 
 
 
 | 178 |  | 
 
 
 
 
 | 179 | HNODE WINAPI OpenClusterNode(HCLUSTER hCluster,LPCWSTR lpszNodeName); | 
 
 
 
 
 | 180 | WINBOOL WINAPI CloseClusterNode(HNODE hNode); | 
 
 
 
 
 | 181 | CLUSTER_NODE_STATE WINAPI GetClusterNodeState(HNODE hNode); | 
 
 
 
 
 | 182 | DWORD WINAPI GetClusterNodeId(HNODE hNode,LPWSTR lpszNodeId,LPDWORD lpcchName); | 
 
 
 
 
 | 183 | #define GetCurrentClusterNodeId(_lpszNodeId_,_lpcchName_) GetClusterNodeId(NULL,(_lpszNodeId_),(_lpcchName_)) | 
 
 
 
 
 | 184 | HCLUSTER WINAPI GetClusterFromNode(HNODE hNode); | 
 
 
 
 
 | 185 | DWORD WINAPI PauseClusterNode(HNODE hNode); | 
 
 
 
 
 | 186 | DWORD WINAPI ResumeClusterNode(HNODE hNode); | 
 
 
 
 
 | 187 | DWORD WINAPI EvictClusterNode(HNODE hNode); | 
 
 
 
 
 | 188 | HNODEENUM WINAPI ClusterNodeOpenEnum(HNODE hNode,DWORD dwType); | 
 
 
 
 
 | 189 | DWORD WINAPI ClusterNodeGetEnumCount(HNODEENUM hNodeEnum); | 
 
 
 
 
 | 190 | DWORD WINAPI ClusterNodeCloseEnum(HNODEENUM hNodeEnum); | 
 
 
 
 
 | 191 | DWORD WINAPI ClusterNodeEnum(HNODEENUM hNodeEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName); | 
 
 
 
 
 | 192 | DWORD WINAPI EvictClusterNodeEx(HNODE hNode,DWORD dwTimeOut,HRESULT *phrCleanupStatus); | 
 
 
 
 
 | 193 | HKEY WINAPI GetClusterResourceTypeKey(HCLUSTER hCluster,LPCWSTR lpszTypeName,REGSAM samDesired); | 
 
 
 
 
 | 194 |  | 
 
 
 
 
 | 195 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 196 | typedef enum CLUSTER_GROUP_ENUM { | 
 
 
 
 
 | 197 | CLUSTER_GROUP_ENUM_CONTAINS = 0x00000001,CLUSTER_GROUP_ENUM_NODES = 0x00000002, | 
 
 
 
 
 | 198 | CLUSTER_GROUP_ENUM_ALL = (CLUSTER_GROUP_ENUM_CONTAINS | CLUSTER_GROUP_ENUM_NODES) | 
 
 
 
 
 | 199 | } CLUSTER_GROUP_ENUM; | 
 
 
 
 
 | 200 |  | 
 
 
 
 
 | 201 | typedef enum CLUSTER_GROUP_STATE { | 
 
 
 
 
 | 202 | ClusterGroupStateUnknown = -1,ClusterGroupOnline,ClusterGroupOffline,ClusterGroupFailed,ClusterGroupPartialOnline,ClusterGroupPending | 
 
 
 
 
 | 203 | } CLUSTER_GROUP_STATE; | 
 
 
 
 
 | 204 |  | 
 
 
 
 
 | 205 | typedef enum CLUSTER_GROUP_AUTOFAILBACK_TYPE { | 
 
 
 
 
 | 206 | ClusterGroupPreventFailback = 0,ClusterGroupAllowFailback,ClusterGroupFailbackTypeCount | 
 
 
 
 
 | 207 | } CLUSTER_GROUP_AUTOFAILBACK_TYPE,CGAFT; | 
 
 
 
 
 | 208 | #endif | 
 
 
 
 
 | 209 |  | 
 
 
 
 
 | 210 | HGROUP WINAPI CreateClusterGroup(HCLUSTER hCluster,LPCWSTR lpszGroupName); | 
 
 
 
 
 | 211 | HGROUP WINAPI OpenClusterGroup(HCLUSTER hCluster,LPCWSTR lpszGroupName); | 
 
 
 
 
 | 212 | WINBOOL WINAPI CloseClusterGroup(HGROUP hGroup); | 
 
 
 
 
 | 213 | HCLUSTER WINAPI GetClusterFromGroup(HGROUP hGroup); | 
 
 
 
 
 | 214 | CLUSTER_GROUP_STATE WINAPI GetClusterGroupState(HGROUP hGroup,LPWSTR lpszNodeName,LPDWORD lpcchNodeName); | 
 
 
 
 
 | 215 | DWORD WINAPI SetClusterGroupName(HGROUP hGroup,LPCWSTR lpszGroupName); | 
 
 
 
 
 | 216 | DWORD WINAPI SetClusterGroupNodeList(HGROUP hGroup,DWORD NodeCount,HNODE NodeList[]); | 
 
 
 
 
 | 217 | DWORD WINAPI OnlineClusterGroup(HGROUP hGroup,HNODE hDestinationNode); | 
 
 
 
 
 | 218 | DWORD WINAPI MoveClusterGroup(HGROUP hGroup,HNODE hDestinationNode); | 
 
 
 
 
 | 219 | DWORD WINAPI OfflineClusterGroup(HGROUP hGroup); | 
 
 
 
 
 | 220 | DWORD WINAPI DeleteClusterGroup(HGROUP hGroup); | 
 
 
 
 
 | 221 | HGROUPENUM WINAPI ClusterGroupOpenEnum(HGROUP hGroup,DWORD dwType); | 
 
 
 
 
 | 222 | DWORD WINAPI ClusterGroupGetEnumCount(HGROUPENUM hGroupEnum); | 
 
 
 
 
 | 223 | DWORD WINAPI ClusterGroupEnum(HGROUPENUM hGroupEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszResourceName,LPDWORD lpcchName); | 
 
 
 
 
 | 224 | DWORD WINAPI ClusterGroupCloseEnum(HGROUPENUM hGroupEnum); | 
 
 
 
 
 | 225 |  | 
 
 
 
 
 | 226 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 227 | typedef enum CLUSTER_RESOURCE_STATE { | 
 
 
 
 
 | 228 | ClusterResourceStateUnknown = -1,ClusterResourceInherited,ClusterResourceInitializing,ClusterResourceOnline,ClusterResourceOffline, | 
 
 
 
 
 | 229 | ClusterResourceFailed,ClusterResourcePending = 128,ClusterResourceOnlinePending,ClusterResourceOfflinePending | 
 
 
 
 
 | 230 | } CLUSTER_RESOURCE_STATE; | 
 
 
 
 
 | 231 |  | 
 
 
 
 
 | 232 | typedef enum CLUSTER_RESOURCE_RESTART_ACTION { | 
 
 
 
 
 | 233 | ClusterResourceDontRestart = 0,ClusterResourceRestartNoNotify,ClusterResourceRestartNotify,ClusterResourceRestartActionCount | 
 
 
 
 
 | 234 | } CLUSTER_RESOURCE_RESTART_ACTION,CRRA; | 
 
 
 
 
 | 235 |  | 
 
 
 
 
 | 236 | typedef enum CLUSTER_RESOURCE_CREATE_FLAGS { | 
 
 
 
 
 | 237 | CLUSTER_RESOURCE_DEFAULT_MONITOR = 0,CLUSTER_RESOURCE_SEPARATE_MONITOR = 1,CLUSTER_RESOURCE_VALID_FLAGS = CLUSTER_RESOURCE_SEPARATE_MONITOR | 
 
 
 
 
 | 238 | } CLUSTER_RESOURCE_CREATE_FLAGS; | 
 
 
 
 
 | 239 | #endif | 
 
 
 
 
 | 240 |  | 
 
 
 
 
 | 241 | HRESOURCE WINAPI CreateClusterResource(HGROUP hGroup,LPCWSTR lpszResourceName,LPCWSTR lpszResourceType,DWORD dwFlags); | 
 
 
 
 
 | 242 | HRESOURCE WINAPI OpenClusterResource(HCLUSTER hCluster,LPCWSTR lpszResourceName); | 
 
 
 
 
 | 243 | WINBOOL WINAPI CloseClusterResource(HRESOURCE hResource); | 
 
 
 
 
 | 244 | HCLUSTER WINAPI GetClusterFromResource(HRESOURCE hResource); | 
 
 
 
 
 | 245 | DWORD WINAPI DeleteClusterResource(HRESOURCE hResource); | 
 
 
 
 
 | 246 | CLUSTER_RESOURCE_STATE WINAPI GetClusterResourceState(HRESOURCE hResource,LPWSTR lpszNodeName,LPDWORD lpcchNodeName,LPWSTR lpszGroupName,LPDWORD lpcchGroupName); | 
 
 
 
 
 | 247 | DWORD WINAPI SetClusterResourceName(HRESOURCE hResource,LPCWSTR lpszResourceName); | 
 
 
 
 
 | 248 | DWORD WINAPI FailClusterResource(HRESOURCE hResource); | 
 
 
 
 
 | 249 | DWORD WINAPI OnlineClusterResource(HRESOURCE hResource); | 
 
 
 
 
 | 250 | DWORD WINAPI OfflineClusterResource(HRESOURCE hResource); | 
 
 
 
 
 | 251 | DWORD WINAPI ChangeClusterResourceGroup(HRESOURCE hResource,HGROUP hGroup); | 
 
 
 
 
 | 252 | DWORD WINAPI AddClusterResourceNode(HRESOURCE hResource,HNODE hNode); | 
 
 
 
 
 | 253 | DWORD WINAPI RemoveClusterResourceNode(HRESOURCE hResource,HNODE hNode); | 
 
 
 
 
 | 254 | DWORD WINAPI AddClusterResourceDependency(HRESOURCE hResource,HRESOURCE hDependsOn); | 
 
 
 
 
 | 255 | DWORD WINAPI RemoveClusterResourceDependency(HRESOURCE hResource,HRESOURCE hDependsOn); | 
 
 
 
 
 | 256 | WINBOOL WINAPI CanResourceBeDependent(HRESOURCE hResource,HRESOURCE hResourceDependent); | 
 
 
 
 
 | 257 | DWORD WINAPI ClusterResourceControl(HRESOURCE hResource,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD cbInBufferSize,LPVOID lpOutBuffer,DWORD cbOutBufferSize,LPDWORD lpBytesReturned); | 
 
 
 
 
 | 258 | DWORD WINAPI ClusterResourceTypeControl(HCLUSTER hCluster,LPCWSTR lpszResourceTypeName,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned); | 
 
 
 
 
 | 259 | DWORD WINAPI ClusterGroupControl(HGROUP hGroup,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned); | 
 
 
 
 
 | 260 | DWORD WINAPI ClusterNodeControl(HNODE hNode,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned); | 
 
 
 
 
 | 261 | WINBOOL WINAPI GetClusterResourceNetworkName(HRESOURCE hResource,LPWSTR lpBuffer,LPDWORD nSize); | 
 
 
 
 
 | 262 |  | 
 
 
 
 
 | 263 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 264 | typedef enum CLUSTER_PROPERTY_TYPE { | 
 
 
 
 
 | 265 | CLUSPROP_TYPE_UNKNOWN = -1,CLUSPROP_TYPE_ENDMARK = 0,CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_TYPE_RESCLASS,CLUSPROP_TYPE_RESERVED1,CLUSPROP_TYPE_NAME, | 
 
 
 
 
 | 266 | CLUSPROP_TYPE_SIGNATURE,CLUSPROP_TYPE_SCSI_ADDRESS,CLUSPROP_TYPE_DISK_NUMBER,CLUSPROP_TYPE_PARTITION_INFO,CLUSPROP_TYPE_FTSET_INFO, | 
 
 
 
 
 | 267 | CLUSPROP_TYPE_DISK_SERIALNUMBER, | 
 
 
 
 
 | 268 | CLUSPROP_TYPE_DISK_GUID           = 11, | 
 
 
 
 
 | 269 | CLUSPROP_TYPE_DISK_SIZE           = 12, | 
 
 
 
 
 | 270 | CLUSPROP_TYPE_PARTITION_INFO_EX   = 13, | 
 
 
 
 
 | 271 | CLUSPROP_TYPE_USER=32768 | 
 
 
 
 
 | 272 | } CLUSTER_PROPERTY_TYPE; | 
 
 
 
 
 | 273 |  | 
 
 
 
 
 | 274 | typedef enum CLUSTER_PROPERTY_FORMAT { | 
 
 
 
 
 | 275 | CLUSPROP_FORMAT_UNKNOWN = 0,CLUSPROP_FORMAT_BINARY,CLUSPROP_FORMAT_DWORD,CLUSPROP_FORMAT_SZ,CLUSPROP_FORMAT_EXPAND_SZ,CLUSPROP_FORMAT_MULTI_SZ, | 
 
 
 
 
 | 276 | CLUSPROP_FORMAT_ULARGE_INTEGER,CLUSPROP_FORMAT_LONG,CLUSPROP_FORMAT_EXPANDED_SZ,CLUSPROP_FORMAT_SECURITY_DESCRIPTOR,CLUSPROP_FORMAT_LARGE_INTEGER, | 
 
 
 
 
 | 277 | CLUSPROP_FORMAT_WORD, | 
 
 
 
 
 | 278 | CLUSPROP_FORMAT_FILETIME              = 12, | 
 
 
 
 
 | 279 | CLUSPROP_FORMAT_USER=32768 | 
 
 
 
 
 | 280 | } CLUSTER_PROPERTY_FORMAT; | 
 
 
 
 
 | 281 | #endif | 
 
 
 
 
 | 282 |  | 
 
 
 
 
 | 283 | #define CLUSPROP_SYNTAX_VALUE(type,format) ((DWORD) ((type << 16) | format)) | 
 
 
 
 
 | 284 |  | 
 
 
 
 
 | 285 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 286 | typedef enum CLUSTER_PROPERTY_SYNTAX { | 
 
 
 
 
 | 287 | CLUSPROP_SYNTAX_ENDMARK = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_ENDMARK,CLUSPROP_FORMAT_UNKNOWN), | 
 
 
 
 
 | 288 | CLUSPROP_SYNTAX_NAME = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_NAME,CLUSPROP_FORMAT_SZ), | 
 
 
 
 
 | 289 | CLUSPROP_SYNTAX_RESCLASS = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_RESCLASS,CLUSPROP_FORMAT_DWORD), | 
 
 
 
 
 | 290 | CLUSPROP_SYNTAX_LIST_VALUE_SZ = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_SZ), | 
 
 
 
 
 | 291 | CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_EXPAND_SZ), | 
 
 
 
 
 | 292 | CLUSPROP_SYNTAX_LIST_VALUE_DWORD = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_DWORD), | 
 
 
 
 
 | 293 | CLUSPROP_SYNTAX_LIST_VALUE_BINARY = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_BINARY), | 
 
 
 
 
 | 294 | CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_MULTI_SZ), | 
 
 
 
 
 | 295 | CLUSPROP_SYNTAX_LIST_VALUE_LONG = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_LONG), | 
 
 
 
 
 | 296 | CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_EXPANDED_SZ), | 
 
 
 
 
 | 297 | CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_SECURITY_DESCRIPTOR), | 
 
 
 
 
 | 298 | CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_LARGE_INTEGER), | 
 
 
 
 
 | 299 | CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_ULARGE_INTEGER), | 
 
 
 
 
 | 300 | CLUSPROP_SYNTAX_DISK_SIGNATURE = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_SIGNATURE,CLUSPROP_FORMAT_DWORD), | 
 
 
 
 
 | 301 | CLUSPROP_SYNTAX_SCSI_ADDRESS = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_SCSI_ADDRESS,CLUSPROP_FORMAT_DWORD), | 
 
 
 
 
 | 302 | CLUSPROP_SYNTAX_DISK_NUMBER = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_DISK_NUMBER,CLUSPROP_FORMAT_DWORD), | 
 
 
 
 
 | 303 | CLUSPROP_SYNTAX_PARTITION_INFO = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_PARTITION_INFO,CLUSPROP_FORMAT_BINARY), | 
 
 
 
 
 | 304 | CLUSPROP_SYNTAX_FTSET_INFO = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_FTSET_INFO,CLUSPROP_FORMAT_BINARY), | 
 
 
 
 
 | 305 | CLUSPROP_SYNTAX_DISK_SERIALNUMBER = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_DISK_SERIALNUMBER,CLUSPROP_FORMAT_SZ), | 
 
 
 
 
 | 306 | CLUSPROP_SYNTAX_DISK_GUID = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_DISK_GUID,CLUSPROP_FORMAT_SZ), /*0x000b0003*/ | 
 
 
 
 
 | 307 | CLUSPROP_SYNTAX_DISK_SIZE = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_DISK_SIZE,CLUSPROP_FORMAT_ULARGE_INTEGER),/*0x000c0006*/ | 
 
 
 
 
 | 308 | CLUSPROP_SYNTAX_PARTITION_INFO_EX = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_PARTITION_INFO_EX,CLUSPROP_FORMAT_BINARY),/*0x000d0001*/ | 
 
 
 
 
 | 309 | CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_FILETIME) /*0x0001000c*/ | 
 
 
 
 
 | 310 | } CLUSTER_PROPERTY_SYNTAX; | 
 
 
 
 
 | 311 | #endif | 
 
 
 
 
 | 312 |  | 
 
 
 
 
 | 313 | #define CLUS_ACCESS_ANY 0 | 
 
 
 
 
 | 314 | #define CLUS_ACCESS_READ 0x01 | 
 
 
 
 
 | 315 | #define CLUS_ACCESS_WRITE 0x02 | 
 
 
 
 
 | 316 |  | 
 
 
 
 
 | 317 | #define CLUS_NO_MODIFY 0 | 
 
 
 
 
 | 318 | #define CLUS_MODIFY 0x01 | 
 
 
 
 
 | 319 |  | 
 
 
 
 
 | 320 | #define CLUS_NOT_GLOBAL 0 | 
 
 
 
 
 | 321 | #define CLUS_GLOBAL 0x01 | 
 
 
 
 
 | 322 |  | 
 
 
 
 
 | 323 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 324 | typedef enum CLUSTER_CONTROL_OBJECT { | 
 
 
 
 
 | 325 | CLUS_OBJECT_INVALID=0,CLUS_OBJECT_RESOURCE,CLUS_OBJECT_RESOURCE_TYPE,CLUS_OBJECT_GROUP,CLUS_OBJECT_NODE,CLUS_OBJECT_NETWORK, | 
 
 
 
 
 | 326 | CLUS_OBJECT_NETINTERFACE,CLUS_OBJECT_CLUSTER,CLUS_OBJECT_USER=128 | 
 
 
 
 
 | 327 | } CLUSTER_CONTROL_OBJECT; | 
 
 
 
 
 | 328 | #endif | 
 
 
 
 
 | 329 |  | 
 
 
 
 
 | 330 | #define CLUSCTL_ACCESS_SHIFT 0 | 
 
 
 
 
 | 331 | #define CLUSCTL_FUNCTION_SHIFT 2 | 
 
 
 
 
 | 332 | #define CLCTL_INTERNAL_SHIFT 20 | 
 
 
 
 
 | 333 | #define CLCTL_USER_SHIFT 21 | 
 
 
 
 
 | 334 | #define CLCTL_MODIFY_SHIFT 22 | 
 
 
 
 
 | 335 | #define CLCTL_GLOBAL_SHIFT 23 | 
 
 
 
 
 | 336 | #define CLUSCTL_OBJECT_SHIFT 24 | 
 
 
 
 
 | 337 |  | 
 
 
 
 
 | 338 | #define CLCTL_INTERNAL_MASK (1<<CLCTL_INTERNAL_SHIFT) | 
 
 
 
 
 | 339 | #define CLCTL_USER_MASK (1<<CLCTL_USER_SHIFT) | 
 
 
 
 
 | 340 | #define CLCTL_MODIFY_MASK (1<<CLCTL_MODIFY_SHIFT) | 
 
 
 
 
 | 341 | #define CLCTL_GLOBAL_MASK (1<<CLCTL_GLOBAL_SHIFT) | 
 
 
 
 
 | 342 | #define CLUSCTL_CONTROL_CODE_MASK 0x3FFFFF | 
 
 
 
 
 | 343 | #define CLUSCTL_OBJECT_MASK 0xFF | 
 
 
 
 
 | 344 | #define CLUSCTL_ACCESS_MODE_MASK 0x03 | 
 
 
 
 
 | 345 |  | 
 
 
 
 
 | 346 | #define CLCTL_CLUSTER_BASE 0 | 
 
 
 
 
 | 347 | #define CLCTL_USER_BASE (1<<CLCTL_USER_SHIFT) | 
 
 
 
 
 | 348 |  | 
 
 
 
 
 | 349 | #define CLCTL_EXTERNAL_CODE(Function,Access,Modify) (((Access) << CLUSCTL_ACCESS_SHIFT) | ((CLCTL_CLUSTER_BASE + Function) << CLUSCTL_FUNCTION_SHIFT) | ((Modify) << CLCTL_MODIFY_SHIFT)) | 
 
 
 
 
 | 350 | #define CLCTL_INTERNAL_CODE(Function,Access,Modify) (((Access) << CLUSCTL_ACCESS_SHIFT) | CLCTL_INTERNAL_MASK | ((CLCTL_CLUSTER_BASE + Function) << CLUSCTL_FUNCTION_SHIFT) | ((Modify) << CLCTL_MODIFY_SHIFT)) | 
 
 
 
 
 | 351 |  | 
 
 
 
 
 | 352 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 353 | typedef enum CLCTL_CODES { | 
 
 
 
 
 | 354 | CLCTL_UNKNOWN = CLCTL_EXTERNAL_CODE(0,CLUS_ACCESS_ANY,CLUS_NO_MODIFY), | 
 
 
 
 
 | 355 | CLCTL_GET_CHARACTERISTICS = CLCTL_EXTERNAL_CODE(1,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 356 | CLCTL_GET_FLAGS = CLCTL_EXTERNAL_CODE(2,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 357 | CLCTL_GET_CLASS_INFO = CLCTL_EXTERNAL_CODE(3,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 358 | CLCTL_GET_REQUIRED_DEPENDENCIES = CLCTL_EXTERNAL_CODE(4,CLUS_ACCESS_READ, | 
 
 
 
 
 | 359 | CLUS_NO_MODIFY),CLCTL_GET_ARB_TIMEOUT = CLCTL_EXTERNAL_CODE(5,CLUS_ACCESS_READ, | 
 
 
 
 
 | 360 | CLUS_NO_MODIFY),CLCTL_GET_NAME = CLCTL_EXTERNAL_CODE(10,CLUS_ACCESS_READ, | 
 
 
 
 
 | 361 | CLUS_NO_MODIFY),CLCTL_GET_RESOURCE_TYPE = CLCTL_EXTERNAL_CODE(11, | 
 
 
 
 
 | 362 | CLUS_ACCESS_READ,CLUS_NO_MODIFY),CLCTL_GET_NODE = CLCTL_EXTERNAL_CODE(12,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 363 | CLCTL_GET_NETWORK = CLCTL_EXTERNAL_CODE(13,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 364 | CLCTL_GET_ID = CLCTL_EXTERNAL_CODE(14,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 365 | CLCTL_GET_FQDN = CLCTL_EXTERNAL_CODE(15,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 366 | CLCTL_GET_CLUSTER_SERVICE_ACCOUNT_NAME = CLCTL_EXTERNAL_CODE(16,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 367 | CLCTL_CHECK_VOTER_EVICT                    = CLCTL_EXTERNAL_CODE(17,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000045*/ | 
 
 
 
 
 | 368 | CLCTL_CHECK_VOTER_DOWN                     = CLCTL_EXTERNAL_CODE(18,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000049*/ | 
 
 
 
 
 | 369 | CLCTL_SHUTDOWN                             = CLCTL_EXTERNAL_CODE(19,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x0000004d*/ | 
 
 
 
 
 | 370 | CLCTL_ENUM_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(20,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 371 | CLCTL_GET_RO_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(21,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 372 | CLCTL_GET_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(22,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 373 | CLCTL_SET_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(23,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 374 | CLCTL_VALIDATE_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(24,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 375 | CLCTL_GET_COMMON_PROPERTY_FMTS = CLCTL_EXTERNAL_CODE(25,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 376 | CLCTL_GET_COMMON_RESOURCE_PROPERTY_FMTS = CLCTL_EXTERNAL_CODE(26,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 377 | CLCTL_ENUM_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(30,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 378 | CLCTL_GET_RO_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(31,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 379 | CLCTL_GET_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(32,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 380 | CLCTL_SET_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(33,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 381 | CLCTL_VALIDATE_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(34,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 382 | CLCTL_GET_PRIVATE_PROPERTY_FMTS = CLCTL_EXTERNAL_CODE(35,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 383 | CLCTL_GET_PRIVATE_RESOURCE_PROPERTY_FMTS= CLCTL_EXTERNAL_CODE(36,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 384 | CLCTL_ADD_REGISTRY_CHECKPOINT = CLCTL_EXTERNAL_CODE(40,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 385 | CLCTL_DELETE_REGISTRY_CHECKPOINT = CLCTL_EXTERNAL_CODE(41,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 386 | CLCTL_GET_REGISTRY_CHECKPOINTS = CLCTL_EXTERNAL_CODE(42,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 387 | CLCTL_ADD_CRYPTO_CHECKPOINT = CLCTL_EXTERNAL_CODE(43,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 388 | CLCTL_DELETE_CRYPTO_CHECKPOINT = CLCTL_EXTERNAL_CODE(44,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 389 | CLCTL_GET_CRYPTO_CHECKPOINTS = CLCTL_EXTERNAL_CODE(45,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 390 | CLCTL_RESOURCE_UPGRADE_DLL = CLCTL_EXTERNAL_CODE(46,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 391 | CLCTL_ADD_REGISTRY_CHECKPOINT_64BIT = CLCTL_EXTERNAL_CODE(47,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 392 | CLCTL_ADD_REGISTRY_CHECKPOINT_32BIT = CLCTL_EXTERNAL_CODE(48,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 393 | CLCTL_GET_LOADBAL_PROCESS_LIST = CLCTL_EXTERNAL_CODE(50,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 394 | CLCTL_GET_NETWORK_NAME = CLCTL_EXTERNAL_CODE(90,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 395 | CLCTL_NETNAME_GET_VIRTUAL_SERVER_TOKEN = CLCTL_EXTERNAL_CODE(91,CLUS_ACCESS_READ, | 
 
 
 
 
 | 396 | CLUS_NO_MODIFY),CLCTL_NETNAME_REGISTER_DNS_RECORDS = CLCTL_EXTERNAL_CODE(92,CLUS_ACCESS_WRITE,CLUS_NO_MODIFY), | 
 
 
 
 
 | 397 | CLCTL_NETNAME_CREDS_UPDATED = (CLCTL_EXTERNAL_CODE(98,CLUS_ACCESS_WRITE,CLUS_MODIFY)|CLCTL_GLOBAL_MASK), | 
 
 
 
 
 | 398 | CLCTL_STORAGE_GET_DISK_INFO = CLCTL_EXTERNAL_CODE(100,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 399 | CLCTL_STORAGE_GET_AVAILABLE_DISKS = CLCTL_EXTERNAL_CODE(101,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 400 | CLCTL_STORAGE_IS_PATH_VALID = CLCTL_EXTERNAL_CODE(102,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 401 | CLCTL_STORAGE_GET_ALL_AVAILABLE_DISKS = (CLCTL_EXTERNAL_CODE(103,CLUS_ACCESS_READ,CLUS_NO_MODIFY) | CLCTL_GLOBAL_MASK), | 
 
 
 
 
 | 402 | CLCTL_QUERY_DELETE = CLCTL_EXTERNAL_CODE(110,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 403 | CLCTL_QUERY_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE(120,CLUS_ACCESS_READ,CLUS_NO_MODIFY), | 
 
 
 
 
 | 404 | CLCTL_SET_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE(121,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 405 | CLCTL_STORAGE_SET_DRIVELETTER              = CLCTL_EXTERNAL_CODE(122,CLUS_ACCESS_WRITE,CLUS_MODIFY),/*0x004001ea*/ | 
 
 
 
 
 | 406 | CLCTL_STORAGE_GET_DRIVELETTERS             = CLCTL_EXTERNAL_CODE(123,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x000001ed*/ | 
 
 
 
 
 | 407 | CLCTL_STORAGE_GET_DISK_INFO_EX             = CLCTL_EXTERNAL_CODE(124,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x000001f1*/ | 
 
 
 
 
 | 408 | CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX       = CLCTL_EXTERNAL_CODE(125,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x000001f5*/ | 
 
 
 
 
 | 409 | CLCTL_STORAGE_REMAP_DRIVELETTER            = CLCTL_EXTERNAL_CODE(128,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000201,*/ | 
 
 
 
 
 | 410 | CLCTL_STORAGE_GET_DISKID                   = CLCTL_EXTERNAL_CODE(129,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000205*/ | 
 
 
 
 
 | 411 | CLCTL_STORAGE_IS_CLUSTERABLE               = CLCTL_EXTERNAL_CODE(130,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000209*/ | 
 
 
 
 
 | 412 | CLCTL_STORAGE_REMOVE_VM_OWNERSHIP          = CLCTL_EXTERNAL_CODE(131,CLUS_ACCESS_WRITE,CLUS_MODIFY),/*0x0040020e*/ | 
 
 
 
 
 | 413 | CLCTL_STORAGE_GET_MOUNTPOINTS              = CLCTL_EXTERNAL_CODE(132,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000211*/ | 
 
 
 
 
 | 414 | CLCTL_STORAGE_CLUSTER_DISK                 = (CLCTL_EXTERNAL_CODE(132,CLUS_ACCESS_WRITE,CLUS_MODIFY)|CLCTL_GLOBAL_MASK),/*0x00c00212*/ | 
 
 
 
 
 | 415 | CLCTL_STORAGE_GET_DIRTY                    = CLCTL_EXTERNAL_CODE(134,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000219*/ | 
 
 
 
 
 | 416 | CLCTL_STORAGE_GET_SHARED_VOLUME_INFO       = CLCTL_EXTERNAL_CODE(137,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/* 0x00000225 */ | 
 
 
 
 
 | 417 | CLCTL_STORAGE_IS_CSV_FILE                  = CLCTL_EXTERNAL_CODE(138,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000229*/ | 
 
 
 
 
 | 418 | CLCTL_VALIDATE_PATH                        = CLCTL_EXTERNAL_CODE(140,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000231,*/ | 
 
 
 
 
 | 419 | CLCTL_VALIDATE_NETNAME                     = CLCTL_EXTERNAL_CODE(141,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000235*/ | 
 
 
 
 
 | 420 | CLCTL_VALIDATE_DIRECTORY                   = CLCTL_EXTERNAL_CODE(142,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000239*/ | 
 
 
 
 
 | 421 | CLCTL_BATCH_BLOCK_KEY                      = CLCTL_EXTERNAL_CODE(143,CLUS_ACCESS_WRITE,CLUS_NO_MODIFY),/*0x0000023e*/ | 
 
 
 
 
 | 422 | CLCTL_BATCH_UNBLOCK_KEY                    = CLCTL_EXTERNAL_CODE(144,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000241*/ | 
 
 
 
 
 | 423 | CLCTL_FILESERVER_SHARE_ADD                 = CLCTL_EXTERNAL_CODE(145,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00400245*/ | 
 
 
 
 
 | 424 | CLCTL_FILESERVER_SHARE_DEL                 = CLCTL_EXTERNAL_CODE(146,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00400249*/ | 
 
 
 
 
 | 425 | CLCTL_FILESERVER_SHARE_MODIFY              = CLCTL_EXTERNAL_CODE(147,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x0040024d*/ | 
 
 
 
 
 | 426 | CLCTL_FILESERVER_SHARE_REPORT              = CLCTL_EXTERNAL_CODE(148,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000251*/ | 
 
 
 
 
 | 427 | CLCTL_ENABLE_SHARED_VOLUME_DIRECTIO        = CLCTL_EXTERNAL_CODE(162,CLUS_ACCESS_WRITE,CLUS_MODIFY),/*0x0040028a*/ | 
 
 
 
 
 | 428 | CLCTL_DISABLE_SHARED_VOLUME_DIRECTIO       = CLCTL_EXTERNAL_CODE(163,CLUS_ACCESS_WRITE,CLUS_MODIFY),/*0x0040028e*/ | 
 
 
 
 
 | 429 | CLCTL_GET_SHARED_VOLUME_ID                 = CLCTL_EXTERNAL_CODE(164,CLUS_ACCESS_READ,CLUS_NO_MODIFY),/*0x00000291*/ | 
 
 
 
 
 | 430 | CLCTL_SET_CSV_MAINTENANCE_MODE             = CLCTL_EXTERNAL_CODE(165,CLUS_ACCESS_WRITE,CLUS_MODIFY),/*0x00400296*/ | 
 
 
 
 
 | 431 | CLCTL_SET_SHARED_VOLUME_BACKUP_MODE        = CLCTL_EXTERNAL_CODE(166,CLUS_ACCESS_WRITE,CLUS_MODIFY),/*0x0040029a,*/ | 
 
 
 
 
 | 432 | CLCTL_DELETE = CLCTL_INTERNAL_CODE(1,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 433 | CLCTL_INSTALL_NODE = CLCTL_INTERNAL_CODE(2,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 434 | CLCTL_EVICT_NODE = CLCTL_INTERNAL_CODE(3,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 435 | CLCTL_ADD_DEPENDENCY = CLCTL_INTERNAL_CODE(4,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 436 | CLCTL_REMOVE_DEPENDENCY = CLCTL_INTERNAL_CODE(5,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 437 | CLCTL_ADD_OWNER = CLCTL_INTERNAL_CODE(6,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 438 | CLCTL_REMOVE_OWNER = CLCTL_INTERNAL_CODE(7,CLUS_ACCESS_WRITE, | 
 
 
 
 
 | 439 | CLUS_MODIFY),CLCTL_SET_NAME = CLCTL_INTERNAL_CODE(9,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 440 | CLCTL_CLUSTER_NAME_CHANGED = CLCTL_INTERNAL_CODE(10,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 441 | CLCTL_CLUSTER_VERSION_CHANGED = CLCTL_INTERNAL_CODE(11,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 442 | CLCTL_FIXUP_ON_UPGRADE = CLCTL_INTERNAL_CODE(12,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 443 | CLCTL_STARTING_PHASE1 = CLCTL_INTERNAL_CODE(13,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 444 | CLCTL_STARTING_PHASE2 = CLCTL_INTERNAL_CODE(14,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 445 | CLCTL_HOLD_IO = CLCTL_INTERNAL_CODE(15,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 446 | CLCTL_RESUME_IO = CLCTL_INTERNAL_CODE(16,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 447 | CLCTL_FORCE_QUORUM = CLCTL_INTERNAL_CODE(17,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 448 | CLCTL_INITIALIZE = CLCTL_INTERNAL_CODE(18,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 449 | CLCTL_STATE_CHANGE_REASON = CLCTL_INTERNAL_CODE(19,CLUS_ACCESS_WRITE,CLUS_MODIFY), | 
 
 
 
 
 | 450 | CLCTL_PROVIDER_STATE_CHANGE = CLCTL_INTERNAL_CODE(20,CLUS_ACCESS_WRITE, CLUS_MODIFY),/*0x00500052*/ | 
 
 
 
 
 | 451 | CLCTL_LEAVING_GROUP = CLCTL_INTERNAL_CODE(21,CLUS_ACCESS_WRITE, CLUS_MODIFY),/*0x00500056,*/ | 
 
 
 
 
 | 452 | CLCTL_JOINING_GROUP = CLCTL_INTERNAL_CODE(22,CLUS_ACCESS_WRITE, CLUS_MODIFY),/*0x0050005a*/ | 
 
 
 
 
 | 453 | CLCTL_FSWITNESS_GET_EPOCH_INFO = CLCTL_INTERNAL_CODE(23,CLUS_ACCESS_READ, CLUS_NO_MODIFY),/*0x0010005d*/ | 
 
 
 
 
 | 454 | CLCTL_FSWITNESS_SET_EPOCH_INFO = CLCTL_INTERNAL_CODE(24,CLUS_ACCESS_WRITE, CLUS_MODIFY),/*0x00500062*/ | 
 
 
 
 
 | 455 | CLCTL_FSWITNESS_RELEASE_LOCK = CLCTL_INTERNAL_CODE(25,CLUS_ACCESS_WRITE, CLUS_MODIFY),/*0x00500066,*/ | 
 
 
 
 
 | 456 | CLCTL_NETNAME_CREDS_NOTIFYCAM = CLCTL_INTERNAL_CODE(26,CLUS_ACCESS_WRITE, CLUS_MODIFY),/*0x0050006a*/ | 
 
 
 
 
 | 457 | CLCTL_STORAGE_GET_DISK_NUMBER = CLCTL_INTERNAL_CODE(27,CLUS_ACCESS_READ, CLUS_NO_MODIFY) /*0x0010006d */ | 
 
 
 
 
 | 458 | } CLCTL_CODES; | 
 
 
 
 
 | 459 | #endif | 
 
 
 
 
 | 460 |  | 
 
 
 
 
 | 461 | #define CLUSCTL_RESOURCE_CODE(Function) (((CLUS_OBJECT_RESOURCE << CLUSCTL_OBJECT_SHIFT) | Function)) | 
 
 
 
 
 | 462 | #define CLUSCTL_RESOURCE_TYPE_CODE(Function) (((CLUS_OBJECT_RESOURCE_TYPE << CLUSCTL_OBJECT_SHIFT) | Function)) | 
 
 
 
 
 | 463 | #define CLUSCTL_GROUP_CODE(Function) (((CLUS_OBJECT_GROUP << CLUSCTL_OBJECT_SHIFT) | Function)) | 
 
 
 
 
 | 464 | #define CLUSCTL_NODE_CODE(Function) (((CLUS_OBJECT_NODE << CLUSCTL_OBJECT_SHIFT) | Function)) | 
 
 
 
 
 | 465 | #define CLUSCTL_NETWORK_CODE(Function) (((CLUS_OBJECT_NETWORK << CLUSCTL_OBJECT_SHIFT) | Function)) | 
 
 
 
 
 | 466 | #define CLUSCTL_NETINTERFACE_CODE(Function) (((CLUS_OBJECT_NETINTERFACE << CLUSCTL_OBJECT_SHIFT) | Function)) | 
 
 
 
 
 | 467 | #define CLUSCTL_CLUSTER_CODE(Function) (((CLUS_OBJECT_CLUSTER << CLUSCTL_OBJECT_SHIFT) | Function)) | 
 
 
 
 
 | 468 | #define CLUSCTL_USER_CODE(Function,Object) (((Object) << CLUSCTL_OBJECT_SHIFT) | ((CLCTL_USER_BASE + Function) << CLUSCTL_FUNCTION_SHIFT)) | 
 
 
 
 
 | 469 | #define CLUSCTL_GET_CONTROL_FUNCTION(ControlCode) ((ControlCode >> CLUSCTL_ACCESS_SHIFT) & CLUSCTL_CONTROL_CODE_MASK) | 
 
 
 
 
 | 470 | #define CLUSCTL_GET_ACCESS_MODE(ControlCode) ((ControlCode >> CLUSCTL_ACCESS_SHIFT) & CLUSCTL_ACCESS_MODE_MASK) | 
 
 
 
 
 | 471 | #define CLUSCTL_GET_CONTROL_OBJECT(ControlCode) ((ControlCode >> CLUSCTL_OBJECT_SHIFT) & CLUSCTL_OBJECT_MASK) | 
 
 
 
 
 | 472 |  | 
 
 
 
 
 | 473 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 474 | typedef enum CLUSCTL_RESOURCE_CODES { | 
 
 
 
 
 | 475 | CLUSCTL_RESOURCE_UNKNOWN = CLUSCTL_RESOURCE_CODE(CLCTL_UNKNOWN), | 
 
 
 
 
 | 476 | CLUSCTL_RESOURCE_GET_CHARACTERISTICS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_CHARACTERISTICS), | 
 
 
 
 
 | 477 | CLUSCTL_RESOURCE_GET_FLAGS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_FLAGS), | 
 
 
 
 
 | 478 | CLUSCTL_RESOURCE_GET_CLASS_INFO = CLUSCTL_RESOURCE_CODE(CLCTL_GET_CLASS_INFO), | 
 
 
 
 
 | 479 | CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_REQUIRED_DEPENDENCIES), | 
 
 
 
 
 | 480 | CLUSCTL_RESOURCE_GET_NAME = CLUSCTL_RESOURCE_CODE(CLCTL_GET_NAME), | 
 
 
 
 
 | 481 | CLUSCTL_RESOURCE_GET_ID = CLUSCTL_RESOURCE_CODE(CLCTL_GET_ID), | 
 
 
 
 
 | 482 | CLUSCTL_RESOURCE_GET_RESOURCE_TYPE = CLUSCTL_RESOURCE_CODE(CLCTL_GET_RESOURCE_TYPE), | 
 
 
 
 
 | 483 | CLUSCTL_RESOURCE_ENUM_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_ENUM_COMMON_PROPERTIES), | 
 
 
 
 
 | 484 | CLUSCTL_RESOURCE_GET_RO_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_RO_COMMON_PROPERTIES), | 
 
 
 
 
 | 485 | CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_COMMON_PROPERTIES), | 
 
 
 
 
 | 486 | CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_SET_COMMON_PROPERTIES), | 
 
 
 
 
 | 487 | CLUSCTL_RESOURCE_VALIDATE_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES), | 
 
 
 
 
 | 488 | CLUSCTL_RESOURCE_GET_COMMON_PROPERTY_FMTS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS), | 
 
 
 
 
 | 489 | CLUSCTL_RESOURCE_ENUM_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 490 | CLUSCTL_RESOURCE_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 491 | CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 492 | CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_SET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 493 | CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 494 | CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS), | 
 
 
 
 
 | 495 | CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_REGISTRY_CHECKPOINT), | 
 
 
 
 
 | 496 | CLUSCTL_RESOURCE_DELETE_REGISTRY_CHECKPOINT = CLUSCTL_RESOURCE_CODE(CLCTL_DELETE_REGISTRY_CHECKPOINT), | 
 
 
 
 
 | 497 | CLUSCTL_RESOURCE_GET_REGISTRY_CHECKPOINTS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_REGISTRY_CHECKPOINTS), | 
 
 
 
 
 | 498 | CLUSCTL_RESOURCE_ADD_CRYPTO_CHECKPOINT = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_CRYPTO_CHECKPOINT), | 
 
 
 
 
 | 499 | CLUSCTL_RESOURCE_DELETE_CRYPTO_CHECKPOINT = CLUSCTL_RESOURCE_CODE(CLCTL_DELETE_CRYPTO_CHECKPOINT), | 
 
 
 
 
 | 500 | CLUSCTL_RESOURCE_GET_CRYPTO_CHECKPOINTS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_CRYPTO_CHECKPOINTS), | 
 
 
 
 
 | 501 | CLUSCTL_RESOURCE_GET_LOADBAL_PROCESS_LIST = CLUSCTL_RESOURCE_CODE(CLCTL_GET_LOADBAL_PROCESS_LIST), | 
 
 
 
 
 | 502 | CLUSCTL_RESOURCE_GET_NETWORK_NAME = CLUSCTL_RESOURCE_CODE(CLCTL_GET_NETWORK_NAME), | 
 
 
 
 
 | 503 | CLUSCTL_RESOURCE_NETNAME_GET_VIRTUAL_SERVER_TOKEN = CLUSCTL_RESOURCE_CODE(CLCTL_NETNAME_GET_VIRTUAL_SERVER_TOKEN), | 
 
 
 
 
 | 504 | CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS = CLUSCTL_RESOURCE_CODE(CLCTL_NETNAME_REGISTER_DNS_RECORDS), | 
 
 
 
 
 | 505 | CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_GET_DISK_INFO), | 
 
 
 
 
 | 506 | CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_IS_PATH_VALID), | 
 
 
 
 
 | 507 | CLUSCTL_RESOURCE_QUERY_DELETE = CLUSCTL_RESOURCE_CODE(CLCTL_QUERY_DELETE), | 
 
 
 
 
 | 508 | CLUSCTL_RESOURCE_UPGRADE_DLL = CLUSCTL_RESOURCE_CODE(CLCTL_RESOURCE_UPGRADE_DLL), | 
 
 
 
 
 | 509 | CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_64BIT = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_REGISTRY_CHECKPOINT_64BIT), | 
 
 
 
 
 | 510 | CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_32BIT = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_REGISTRY_CHECKPOINT_32BIT), | 
 
 
 
 
 | 511 | CLUSCTL_RESOURCE_QUERY_MAINTENANCE_MODE = CLUSCTL_RESOURCE_CODE(CLCTL_QUERY_MAINTENANCE_MODE), | 
 
 
 
 
 | 512 | CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE = CLUSCTL_RESOURCE_CODE(CLCTL_SET_MAINTENANCE_MODE), | 
 
 
 
 
 | 513 | CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER            = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_SET_DRIVELETTER),/*0x014001ea*/ | 
 
 
 
 
 | 514 | CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX           = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_GET_DISK_INFO_EX),/*0x010001f1*/ | 
 
 
 
 
 | 515 | CLUSCTL_RESOURCE_FILESERVER_SHARE_ADD               = CLUSCTL_RESOURCE_CODE(CLCTL_FILESERVER_SHARE_ADD),/*0x01400245*/ | 
 
 
 
 
 | 516 | CLUSCTL_RESOURCE_FILESERVER_SHARE_DEL               = CLUSCTL_RESOURCE_CODE(CLCTL_FILESERVER_SHARE_DEL),/*0x01400249*/ | 
 
 
 
 
 | 517 | CLUSCTL_RESOURCE_FILESERVER_SHARE_MODIFY            = CLUSCTL_RESOURCE_CODE(CLCTL_FILESERVER_SHARE_MODIFY),/*0x0140024d*/ | 
 
 
 
 
 | 518 | CLUSCTL_RESOURCE_FILESERVER_SHARE_REPORT            = CLUSCTL_RESOURCE_CODE(CLCTL_FILESERVER_SHARE_REPORT),/*0x01000251*/ | 
 
 
 
 
 | 519 | CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS            = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_GET_MOUNTPOINTS),/*0x01000211*/ | 
 
 
 
 
 | 520 | CLUSCTL_RESOURCE_STORAGE_CLUSTER_DISK               = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_CLUSTER_DISK),/*0x01c00212*/ | 
 
 
 
 
 | 521 | CLUSCTL_RESOURCE_STORAGE_GET_DIRTY                  = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_GET_DIRTY),/*0x01000219*/ | 
 
 
 
 
 | 522 | CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO     = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_GET_SHARED_VOLUME_INFO), | 
 
 
 
 
 | 523 | CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE           = CLUSCTL_RESOURCE_CODE(CLCTL_SET_CSV_MAINTENANCE_MODE),/*0x00400296*/ | 
 
 
 
 
 | 524 | CLUSCTL_RESOURCE_ENABLE_SHARED_VOLUME_DIRECTIO      = CLUSCTL_RESOURCE_CODE(CLCTL_ENABLE_SHARED_VOLUME_DIRECTIO),/*0x0140028a*/ | 
 
 
 
 
 | 525 | CLUSCTL_RESOURCE_DISABLE_SHARED_VOLUME_DIRECTIO     = CLUSCTL_RESOURCE_CODE(CLCTL_DISABLE_SHARED_VOLUME_DIRECTIO),/*0x0140028e*/ | 
 
 
 
 
 | 526 | CLUSCTL_RESOURCE_SET_SHARED_VOLUME_BACKUP_MODE      = CLUSCTL_RESOURCE_CODE(CLCTL_SET_SHARED_VOLUME_BACKUP_MODE),/*0x0140029a*/ | 
 
 
 
 
 | 527 | CLUSCTL_RESOURCE_DELETE = CLUSCTL_RESOURCE_CODE(CLCTL_DELETE), | 
 
 
 
 
 | 528 | CLUSCTL_RESOURCE_INSTALL_NODE = CLUSCTL_RESOURCE_CODE(CLCTL_INSTALL_NODE), | 
 
 
 
 
 | 529 | CLUSCTL_RESOURCE_EVICT_NODE = CLUSCTL_RESOURCE_CODE(CLCTL_EVICT_NODE), | 
 
 
 
 
 | 530 | CLUSCTL_RESOURCE_ADD_DEPENDENCY = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_DEPENDENCY), | 
 
 
 
 
 | 531 | CLUSCTL_RESOURCE_REMOVE_DEPENDENCY = CLUSCTL_RESOURCE_CODE(CLCTL_REMOVE_DEPENDENCY), | 
 
 
 
 
 | 532 | CLUSCTL_RESOURCE_ADD_OWNER = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_OWNER), | 
 
 
 
 
 | 533 | CLUSCTL_RESOURCE_REMOVE_OWNER = CLUSCTL_RESOURCE_CODE(CLCTL_REMOVE_OWNER), | 
 
 
 
 
 | 534 | CLUSCTL_RESOURCE_SET_NAME = CLUSCTL_RESOURCE_CODE(CLCTL_SET_NAME), | 
 
 
 
 
 | 535 | CLUSCTL_RESOURCE_CLUSTER_NAME_CHANGED = CLUSCTL_RESOURCE_CODE(CLCTL_CLUSTER_NAME_CHANGED), | 
 
 
 
 
 | 536 | CLUSCTL_RESOURCE_CLUSTER_VERSION_CHANGED = CLUSCTL_RESOURCE_CODE(CLCTL_CLUSTER_VERSION_CHANGED), | 
 
 
 
 
 | 537 | CLUSCTL_RESOURCE_FORCE_QUORUM = CLUSCTL_RESOURCE_CODE(CLCTL_FORCE_QUORUM), | 
 
 
 
 
 | 538 | CLUSCTL_RESOURCE_INITIALIZE = CLUSCTL_RESOURCE_CODE(CLCTL_INITIALIZE), | 
 
 
 
 
 | 539 | CLUSCTL_RESOURCE_STATE_CHANGE_REASON = CLUSCTL_RESOURCE_CODE(CLCTL_STATE_CHANGE_REASON), | 
 
 
 
 
 | 540 | CLUSCTL_RESOURCE_PROVIDER_STATE_CHANGE = CLUSCTL_RESOURCE_CODE(CLCTL_PROVIDER_STATE_CHANGE),/*0x01500052*/ | 
 
 
 
 
 | 541 | CLUSCTL_RESOURCE_LEAVING_GROUP = CLUSCTL_RESOURCE_CODE(CLCTL_LEAVING_GROUP),/*0x01500056*/ | 
 
 
 
 
 | 542 | CLUSCTL_RESOURCE_JOINING_GROUP = CLUSCTL_RESOURCE_CODE(CLCTL_JOINING_GROUP),/*0x0150005a*/ | 
 
 
 
 
 | 543 | CLUSCTL_RESOURCE_FSWITNESS_GET_EPOCH_INFO = CLUSCTL_RESOURCE_CODE(CLCTL_FSWITNESS_GET_EPOCH_INFO),/*0x0110005d*/ | 
 
 
 
 
 | 544 | CLUSCTL_RESOURCE_FSWITNESS_SET_EPOCH_INFO = CLUSCTL_RESOURCE_CODE(CLCTL_FSWITNESS_SET_EPOCH_INFO),/*0x01500062*/ | 
 
 
 
 
 | 545 | CLUSCTL_RESOURCE_FSWITNESS_RELEASE_LOCK = CLUSCTL_RESOURCE_CODE(CLCTL_FSWITNESS_RELEASE_LOCK),/*0x01500066*/ | 
 
 
 
 
 | 546 | CLUSCTL_RESOURCE_NETNAME_CREDS_UPDATED = CLUSCTL_RESOURCE_CODE(CLCTL_NETNAME_CREDS_UPDATED)/*0x01c0018a */ | 
 
 
 
 
 | 547 | } CLUSCTL_RESOURCE_CODES; | 
 
 
 
 
 | 548 |  | 
 
 
 
 
 | 549 | typedef enum CLUSCTL_RESOURCE_TYPE_CODES { | 
 
 
 
 
 | 550 | CLUSCTL_RESOURCE_TYPE_UNKNOWN = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_UNKNOWN), | 
 
 
 
 
 | 551 | CLUSCTL_RESOURCE_TYPE_GET_CHARACTERISTICS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_CHARACTERISTICS), | 
 
 
 
 
 | 552 | CLUSCTL_RESOURCE_TYPE_GET_FLAGS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_FLAGS), | 
 
 
 
 
 | 553 | CLUSCTL_RESOURCE_TYPE_GET_CLASS_INFO = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_CLASS_INFO), | 
 
 
 
 
 | 554 | CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_REQUIRED_DEPENDENCIES), | 
 
 
 
 
 | 555 | CLUSCTL_RESOURCE_TYPE_GET_ARB_TIMEOUT = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_ARB_TIMEOUT), | 
 
 
 
 
 | 556 | CLUSCTL_RESOURCE_TYPE_ENUM_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_ENUM_COMMON_PROPERTIES), | 
 
 
 
 
 | 557 | CLUSCTL_RESOURCE_TYPE_GET_RO_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_RO_COMMON_PROPERTIES), | 
 
 
 
 
 | 558 | CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_COMMON_PROPERTIES), | 
 
 
 
 
 | 559 | CLUSCTL_RESOURCE_TYPE_VALIDATE_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES), | 
 
 
 
 
 | 560 | CLUSCTL_RESOURCE_TYPE_SET_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_SET_COMMON_PROPERTIES), | 
 
 
 
 
 | 561 | CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTY_FMTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS), | 
 
 
 
 
 | 562 | CLUSCTL_RESOURCE_TYPE_GET_COMMON_RESOURCE_PROPERTY_FMTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_COMMON_RESOURCE_PROPERTY_FMTS), | 
 
 
 
 
 | 563 | CLUSCTL_RESOURCE_TYPE_ENUM_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 564 | CLUSCTL_RESOURCE_TYPE_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 565 | CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 566 | CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_SET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 567 | CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 568 | CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS), | 
 
 
 
 
 | 569 | CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_RESOURCE_PROPERTY_FMTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_PRIVATE_RESOURCE_PROPERTY_FMTS), | 
 
 
 
 
 | 570 | CLUSCTL_RESOURCE_TYPE_GET_REGISTRY_CHECKPOINTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_REGISTRY_CHECKPOINTS), | 
 
 
 
 
 | 571 | CLUSCTL_RESOURCE_TYPE_GET_CRYPTO_CHECKPOINTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_CRYPTO_CHECKPOINTS), | 
 
 
 
 
 | 572 | CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_STORAGE_GET_AVAILABLE_DISKS), | 
 
 
 
 
 | 573 | CLUSCTL_RESOURCE_TYPE_QUERY_DELETE = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_QUERY_DELETE), | 
 
 
 
 
 | 574 | CLUSCTL_RESOURCE_TYPE_INSTALL_NODE = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_INSTALL_NODE), | 
 
 
 
 
 | 575 | CLUSCTL_RESOURCE_TYPE_EVICT_NODE = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_EVICT_NODE), | 
 
 
 
 
 | 576 | CLUSCTL_RESOURCE_TYPE_CLUSTER_VERSION_CHANGED = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_CLUSTER_VERSION_CHANGED), | 
 
 
 
 
 | 577 | CLUSCTL_RESOURCE_TYPE_FIXUP_ON_UPGRADE = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_FIXUP_ON_UPGRADE), | 
 
 
 
 
 | 578 | CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1 = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_STARTING_PHASE1), | 
 
 
 
 
 | 579 | CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2 = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_STARTING_PHASE2), | 
 
 
 
 
 | 580 | CLUSCTL_RESOURCE_TYPE_HOLD_IO = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_HOLD_IO), | 
 
 
 
 
 | 581 | CLUSCTL_RESOURCE_TYPE_RESUME_IO = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_RESUME_IO) | 
 
 
 
 
 | 582 | } CLUSCTL_RESOURCE_TYPE_CODES; | 
 
 
 
 
 | 583 |  | 
 
 
 
 
 | 584 | typedef enum CLUSPROP_IPADDR_ENABLENETBIOS { | 
 
 
 
 
 | 585 | CLUSPROP_IPADDR_ENABLENETBIOS_DISABLED    = 0,  // 0x0 | 
 
 
 
 
 | 586 | CLUSPROP_IPADDR_ENABLENETBIOS_ENABLED, | 
 
 
 
 
 | 587 | CLUSPROP_IPADDR_ENABLENETBIOS_TRACK_NIC | 
 
 
 
 
 | 588 | } CLUSPROP_IPADDR_ENABLENETBIOS; | 
 
 
 
 
 | 589 |  | 
 
 
 
 
 | 590 | typedef enum CLUSCTL_GROUP_CODES { | 
 
 
 
 
 | 591 | CLUSCTL_GROUP_UNKNOWN = CLUSCTL_GROUP_CODE(CLCTL_UNKNOWN), | 
 
 
 
 
 | 592 | CLUSCTL_GROUP_GET_CHARACTERISTICS = CLUSCTL_GROUP_CODE(CLCTL_GET_CHARACTERISTICS), | 
 
 
 
 
 | 593 | CLUSCTL_GROUP_GET_FLAGS = CLUSCTL_GROUP_CODE(CLCTL_GET_FLAGS), | 
 
 
 
 
 | 594 | CLUSCTL_GROUP_GET_NAME = CLUSCTL_GROUP_CODE(CLCTL_GET_NAME), | 
 
 
 
 
 | 595 | CLUSCTL_GROUP_GET_ID = CLUSCTL_GROUP_CODE(CLCTL_GET_ID), | 
 
 
 
 
 | 596 | CLUSCTL_GROUP_ENUM_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_ENUM_COMMON_PROPERTIES), | 
 
 
 
 
 | 597 | CLUSCTL_GROUP_GET_RO_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_GET_RO_COMMON_PROPERTIES), | 
 
 
 
 
 | 598 | CLUSCTL_GROUP_GET_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_GET_COMMON_PROPERTIES), | 
 
 
 
 
 | 599 | CLUSCTL_GROUP_SET_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_SET_COMMON_PROPERTIES), | 
 
 
 
 
 | 600 | CLUSCTL_GROUP_VALIDATE_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES), | 
 
 
 
 
 | 601 | CLUSCTL_GROUP_ENUM_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 602 | CLUSCTL_GROUP_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 603 | CLUSCTL_GROUP_GET_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_GET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 604 | CLUSCTL_GROUP_SET_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_SET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 605 | CLUSCTL_GROUP_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 606 | CLUSCTL_GROUP_QUERY_DELETE = CLUSCTL_GROUP_CODE(CLCTL_QUERY_DELETE), | 
 
 
 
 
 | 607 | CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS = CLUSCTL_GROUP_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS), | 
 
 
 
 
 | 608 | CLUSCTL_GROUP_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_GROUP_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS) | 
 
 
 
 
 | 609 | } CLUSCTL_GROUP_CODES; | 
 
 
 
 
 | 610 |  | 
 
 
 
 
 | 611 | typedef enum CLUSCTL_NODE_CODES { | 
 
 
 
 
 | 612 | CLUSCTL_NODE_UNKNOWN = CLUSCTL_NODE_CODE(CLCTL_UNKNOWN), | 
 
 
 
 
 | 613 | CLUSCTL_NODE_GET_CHARACTERISTICS = CLUSCTL_NODE_CODE(CLCTL_GET_CHARACTERISTICS), | 
 
 
 
 
 | 614 | CLUSCTL_NODE_GET_FLAGS = CLUSCTL_NODE_CODE(CLCTL_GET_FLAGS), | 
 
 
 
 
 | 615 | CLUSCTL_NODE_GET_NAME = CLUSCTL_NODE_CODE(CLCTL_GET_NAME), | 
 
 
 
 
 | 616 | CLUSCTL_NODE_GET_ID = CLUSCTL_NODE_CODE(CLCTL_GET_ID), | 
 
 
 
 
 | 617 | CLUSCTL_NODE_ENUM_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_ENUM_COMMON_PROPERTIES), | 
 
 
 
 
 | 618 | CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_GET_RO_COMMON_PROPERTIES), | 
 
 
 
 
 | 619 | CLUSCTL_NODE_GET_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_GET_COMMON_PROPERTIES), | 
 
 
 
 
 | 620 | CLUSCTL_NODE_SET_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_SET_COMMON_PROPERTIES), | 
 
 
 
 
 | 621 | CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES), | 
 
 
 
 
 | 622 | CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 623 | CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 624 | CLUSCTL_NODE_GET_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_GET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 625 | CLUSCTL_NODE_SET_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_SET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 626 | CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 627 | CLUSCTL_NODE_GET_COMMON_PROPERTY_FMTS = CLUSCTL_NODE_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS), | 
 
 
 
 
 | 628 | CLUSCTL_NODE_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_NODE_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS), | 
 
 
 
 
 | 629 | CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME = CLUSCTL_NODE_CODE(CLCTL_GET_CLUSTER_SERVICE_ACCOUNT_NAME) | 
 
 
 
 
 | 630 | } CLUSCTL_NODE_CODES; | 
 
 
 
 
 | 631 |  | 
 
 
 
 
 | 632 | typedef enum CLUSCTL_NETWORK_CODES { | 
 
 
 
 
 | 633 | CLUSCTL_NETWORK_UNKNOWN = CLUSCTL_NETWORK_CODE(CLCTL_UNKNOWN), | 
 
 
 
 
 | 634 | CLUSCTL_NETWORK_GET_CHARACTERISTICS = CLUSCTL_NETWORK_CODE(CLCTL_GET_CHARACTERISTICS), | 
 
 
 
 
 | 635 | CLUSCTL_NETWORK_GET_FLAGS = CLUSCTL_NETWORK_CODE(CLCTL_GET_FLAGS), | 
 
 
 
 
 | 636 | CLUSCTL_NETWORK_GET_NAME = CLUSCTL_NETWORK_CODE(CLCTL_GET_NAME), | 
 
 
 
 
 | 637 | CLUSCTL_NETWORK_GET_ID = CLUSCTL_NETWORK_CODE(CLCTL_GET_ID), | 
 
 
 
 
 | 638 | CLUSCTL_NETWORK_ENUM_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_ENUM_COMMON_PROPERTIES), | 
 
 
 
 
 | 639 | CLUSCTL_NETWORK_GET_RO_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_GET_RO_COMMON_PROPERTIES), | 
 
 
 
 
 | 640 | CLUSCTL_NETWORK_GET_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_GET_COMMON_PROPERTIES), | 
 
 
 
 
 | 641 | CLUSCTL_NETWORK_SET_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_SET_COMMON_PROPERTIES), | 
 
 
 
 
 | 642 | CLUSCTL_NETWORK_VALIDATE_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES), | 
 
 
 
 
 | 643 | CLUSCTL_NETWORK_ENUM_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 644 | CLUSCTL_NETWORK_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 645 | CLUSCTL_NETWORK_GET_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_GET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 646 | CLUSCTL_NETWORK_SET_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_SET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 647 | CLUSCTL_NETWORK_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 648 | CLUSCTL_NETWORK_GET_COMMON_PROPERTY_FMTS = CLUSCTL_NETWORK_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS), | 
 
 
 
 
 | 649 | CLUSCTL_NETWORK_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_NETWORK_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS) | 
 
 
 
 
 | 650 | } CLUSCTL_NETWORK_CODES; | 
 
 
 
 
 | 651 |  | 
 
 
 
 
 | 652 | typedef enum CLUSCTL_NETINTERFACE_CODES { | 
 
 
 
 
 | 653 | CLUSCTL_NETINTERFACE_UNKNOWN = CLUSCTL_NETINTERFACE_CODE(CLCTL_UNKNOWN), | 
 
 
 
 
 | 654 | CLUSCTL_NETINTERFACE_GET_CHARACTERISTICS = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_CHARACTERISTICS), | 
 
 
 
 
 | 655 | CLUSCTL_NETINTERFACE_GET_FLAGS = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_FLAGS), | 
 
 
 
 
 | 656 | CLUSCTL_NETINTERFACE_GET_NAME = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_NAME), | 
 
 
 
 
 | 657 | CLUSCTL_NETINTERFACE_GET_ID = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_ID), | 
 
 
 
 
 | 658 | CLUSCTL_NETINTERFACE_GET_NODE = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_NODE), | 
 
 
 
 
 | 659 | CLUSCTL_NETINTERFACE_GET_NETWORK = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_NETWORK), | 
 
 
 
 
 | 660 | CLUSCTL_NETINTERFACE_ENUM_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_ENUM_COMMON_PROPERTIES), | 
 
 
 
 
 | 661 | CLUSCTL_NETINTERFACE_GET_RO_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_RO_COMMON_PROPERTIES), | 
 
 
 
 
 | 662 | CLUSCTL_NETINTERFACE_GET_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_COMMON_PROPERTIES), | 
 
 
 
 
 | 663 | CLUSCTL_NETINTERFACE_SET_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_SET_COMMON_PROPERTIES), | 
 
 
 
 
 | 664 | CLUSCTL_NETINTERFACE_VALIDATE_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES), | 
 
 
 
 
 | 665 | CLUSCTL_NETINTERFACE_ENUM_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 666 | CLUSCTL_NETINTERFACE_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 667 | CLUSCTL_NETINTERFACE_GET_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 668 | CLUSCTL_NETINTERFACE_SET_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_SET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 669 | CLUSCTL_NETINTERFACE_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 670 | CLUSCTL_NETINTERFACE_GET_COMMON_PROPERTY_FMTS = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS), | 
 
 
 
 
 | 671 | CLUSCTL_NETINTERFACE_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS) | 
 
 
 
 
 | 672 | } CLUSCTL_NETINTERFACE_CODES; | 
 
 
 
 
 | 673 |  | 
 
 
 
 
 | 674 | typedef enum CLUSCTL_CLUSTER_CODES { | 
 
 
 
 
 | 675 | CLUSCTL_CLUSTER_UNKNOWN = CLUSCTL_CLUSTER_CODE(CLCTL_UNKNOWN), | 
 
 
 
 
 | 676 | CLUSCTL_CLUSTER_GET_FQDN = CLUSCTL_CLUSTER_CODE(CLCTL_GET_FQDN), | 
 
 
 
 
 | 677 | CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_ENUM_COMMON_PROPERTIES), | 
 
 
 
 
 | 678 | CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_GET_RO_COMMON_PROPERTIES), | 
 
 
 
 
 | 679 | CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_GET_COMMON_PROPERTIES), | 
 
 
 
 
 | 680 | CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_SET_COMMON_PROPERTIES), | 
 
 
 
 
 | 681 | CLUSCTL_CLUSTER_VALIDATE_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES), | 
 
 
 
 
 | 682 | CLUSCTL_CLUSTER_ENUM_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 683 | CLUSCTL_CLUSTER_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 684 | CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_GET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 685 | CLUSCTL_CLUSTER_SET_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_SET_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 686 | CLUSCTL_CLUSTER_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES), | 
 
 
 
 
 | 687 | CLUSCTL_CLUSTER_GET_COMMON_PROPERTY_FMTS = CLUSCTL_CLUSTER_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS), | 
 
 
 
 
 | 688 | CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_CLUSTER_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS), | 
 
 
 
 
 | 689 | CLUSCTL_CLUSTER_CHECK_VOTER_EVICT             = CLUSCTL_CLUSTER_CODE(CLCTL_CHECK_VOTER_EVICT),/*0x07000045*/ | 
 
 
 
 
 | 690 | CLUSCTL_CLUSTER_CHECK_VOTER_DOWN              = CLUSCTL_CLUSTER_CODE(CLCTL_CHECK_VOTER_DOWN),/*0x07000049*/ | 
 
 
 
 
 | 691 | CLUSCTL_CLUSTER_SHUTDOWN                      = CLUSCTL_CLUSTER_CODE(CLCTL_SHUTDOWN),/*0x0700004d*/ | 
 
 
 
 
 | 692 | CLUSCTL_CLUSTER_BATCH_BLOCK_KEY               = CLUSCTL_CLUSTER_CODE(CLCTL_BATCH_BLOCK_KEY),/*0x0700023e*/ | 
 
 
 
 
 | 693 | CLUSCTL_CLUSTER_BATCH_UNBLOCK_KEY             = CLUSCTL_CLUSTER_CODE(CLCTL_BATCH_UNBLOCK_KEY),/*0x07000241*/ | 
 
 
 
 
 | 694 | CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID          = CLUSCTL_CLUSTER_CODE(CLCTL_GET_SHARED_VOLUME_ID),/*0x07000291*/ | 
 
 
 
 
 | 695 | } CLUSCTL_CLUSTER_CODES; | 
 
 
 
 
 | 696 |  | 
 
 
 
 
 | 697 | typedef enum CLUSTER_RESOURCE_CLASS { | 
 
 
 
 
 | 698 | CLUS_RESCLASS_UNKNOWN = 0,CLUS_RESCLASS_STORAGE,CLUS_RESCLASS_USER = 32768 | 
 
 
 
 
 | 699 | } CLUSTER_RESOURCE_CLASS; | 
 
 
 
 
 | 700 |  | 
 
 
 
 
 | 701 | typedef enum CLUS_RESSUBCLASS { | 
 
 
 
 
 | 702 | CLUS_RESSUBCLASS_SHARED = 0x80000000 | 
 
 
 
 
 | 703 | } CLUS_RESSUBCLASS; | 
 
 
 
 
 | 704 |  | 
 
 
 
 
 | 705 | typedef enum CLUS_CHARACTERISTICS { | 
 
 
 
 
 | 706 | CLUS_CHAR_UNKNOWN = 0x00000000,CLUS_CHAR_QUORUM = 0x00000001,CLUS_CHAR_DELETE_REQUIRES_ALL_NODES = 0x00000002,CLUS_CHAR_LOCAL_QUORUM = 0x00000004, | 
 
 
 
 
 | 707 | CLUS_CHAR_LOCAL_QUORUM_DEBUG = 0x00000008,CLUS_CHAR_REQUIRES_STATE_CHANGE_REASON = 0x00000010, | 
 
 
 
 
 | 708 | CLUS_CHAR_BROADCAST_DELETE               = 0x00000020, | 
 
 
 
 
 | 709 | CLUS_CHAR_SINGLE_CLUSTER_INSTANCE        = 0x00000040, | 
 
 
 
 
 | 710 | CLUS_CHAR_SINGLE_GROUP_INSTANCE          = 0x00000080 | 
 
 
 
 
 | 711 | } CLUS_CHARACTERISTICS; | 
 
 
 
 
 | 712 |  | 
 
 
 
 
 | 713 | typedef enum CLUS_FLAGS { | 
 
 
 
 
 | 714 | CLUS_FLAG_CORE = 0x00000001 | 
 
 
 
 
 | 715 | } CLUS_FLAGS; | 
 
 
 
 
 | 716 |  | 
 
 
 
 
 | 717 | typedef enum CLUS_RESSUBCLASS_NETWORK { | 
 
 
 
 
 | 718 | CLUS_RESSUBCLASS_NETWORK_INTERNET_PROTOCOL   = 0x80000000 | 
 
 
 
 
 | 719 | } CLUS_RESSUBCLASS_NETWORK; | 
 
 
 
 
 | 720 |  | 
 
 
 
 
 | 721 | typedef enum CLUS_RESSUBCLASS_STORAGE { | 
 
 
 
 
 | 722 | CLUS_RESSUBCLASS_STORAGE_SHARED_BUS   = 0x80000000 | 
 
 
 
 
 | 723 | } CLUS_RESSUBCLASS_STORAGE; | 
 
 
 
 
 | 724 |  | 
 
 
 
 
 | 725 | typedef union CLUSPROP_SYNTAX { | 
 
 
 
 
 | 726 | DWORD dw; | 
 
 
 
 
 | 727 | __C89_NAMELESS struct { | 
 
 
 
 
 | 728 | WORD wFormat; | 
 
 
 
 
 | 729 | WORD wType; | 
 
 
 
 
 | 730 | }; | 
 
 
 
 
 | 731 | } CLUSPROP_SYNTAX,*PCLUSPROP_SYNTAX; | 
 
 
 
 
 | 732 |  | 
 
 
 
 
 | 733 | typedef struct CLUSPROP_VALUE { | 
 
 
 
 
 | 734 | CLUSPROP_SYNTAX Syntax; | 
 
 
 
 
 | 735 | DWORD cbLength; | 
 
 
 
 
 | 736 | } CLUSPROP_VALUE,*PCLUSPROP_VALUE; | 
 
 
 
 
 | 737 |  | 
 
 
 
 
 | 738 | typedef struct CLUSPROP_BINARY | 
 
 
 
 
 | 739 | #ifdef __cplusplus | 
 
 
 
 
 | 740 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 741 | #endif | 
 
 
 
 
 | 742 | { | 
 
 
 
 
 | 743 | #ifndef __cplusplus | 
 
 
 
 
 | 744 | CLUSPROP_VALUE; | 
 
 
 
 
 | 745 | #endif | 
 
 
 
 
 | 746 | BYTE rgb[1]; | 
 
 
 
 
 | 747 | } CLUSPROP_BINARY,*PCLUSPROP_BINARY; | 
 
 
 
 
 | 748 |  | 
 
 
 
 
 | 749 | typedef struct CLUSPROP_WORD | 
 
 
 
 
 | 750 | #ifdef __cplusplus | 
 
 
 
 
 | 751 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 752 | #endif | 
 
 
 
 
 | 753 | { | 
 
 
 
 
 | 754 | #ifndef __cplusplus | 
 
 
 
 
 | 755 | CLUSPROP_VALUE; | 
 
 
 
 
 | 756 | #endif | 
 
 
 
 
 | 757 | WORD w; | 
 
 
 
 
 | 758 | } CLUSPROP_WORD,*PCLUSPROP_WORD; | 
 
 
 
 
 | 759 |  | 
 
 
 
 
 | 760 | typedef struct CLUSPROP_DWORD | 
 
 
 
 
 | 761 | #ifdef __cplusplus | 
 
 
 
 
 | 762 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 763 | #endif | 
 
 
 
 
 | 764 | { | 
 
 
 
 
 | 765 | #ifndef __cplusplus | 
 
 
 
 
 | 766 | CLUSPROP_VALUE; | 
 
 
 
 
 | 767 | #endif | 
 
 
 
 
 | 768 | DWORD dw; | 
 
 
 
 
 | 769 | } CLUSPROP_DWORD,*PCLUSPROP_DWORD; | 
 
 
 
 
 | 770 |  | 
 
 
 
 
 | 771 | typedef struct CLUSPROP_LONG | 
 
 
 
 
 | 772 | #ifdef __cplusplus | 
 
 
 
 
 | 773 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 774 | #endif | 
 
 
 
 
 | 775 | { | 
 
 
 
 
 | 776 | #ifndef __cplusplus | 
 
 
 
 
 | 777 | CLUSPROP_VALUE; | 
 
 
 
 
 | 778 | #endif | 
 
 
 
 
 | 779 | LONG l; | 
 
 
 
 
 | 780 | } CLUSPROP_LONG,*PCLUSPROP_LONG; | 
 
 
 
 
 | 781 |  | 
 
 
 
 
 | 782 | typedef struct CLUSPROP_SZ | 
 
 
 
 
 | 783 | #ifdef __cplusplus | 
 
 
 
 
 | 784 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 785 | #endif | 
 
 
 
 
 | 786 | { | 
 
 
 
 
 | 787 | #ifndef __cplusplus | 
 
 
 
 
 | 788 | CLUSPROP_VALUE; | 
 
 
 
 
 | 789 | #endif | 
 
 
 
 
 | 790 | WCHAR sz[1]; | 
 
 
 
 
 | 791 | } CLUSPROP_SZ,*PCLUSPROP_SZ; | 
 
 
 
 
 | 792 |  | 
 
 
 
 
 | 793 | typedef CLUSPROP_SZ CLUSPROP_MULTI_SZ,*PCLUSPROP_MULTI_SZ; | 
 
 
 
 
 | 794 | typedef CLUSPROP_SZ CLUSPROP_PROPERTY_NAME,*PCLUSPROP_PROPERTY_NAME; | 
 
 
 
 
 | 795 |  | 
 
 
 
 
 | 796 | typedef struct CLUSPROP_ULARGE_INTEGER | 
 
 
 
 
 | 797 | #ifdef __cplusplus | 
 
 
 
 
 | 798 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 799 | #endif | 
 
 
 
 
 | 800 | { | 
 
 
 
 
 | 801 | #ifndef __cplusplus | 
 
 
 
 
 | 802 | CLUSPROP_VALUE; | 
 
 
 
 
 | 803 | #endif | 
 
 
 
 
 | 804 | ULARGE_INTEGER li; | 
 
 
 
 
 | 805 | } CLUSPROP_ULARGE_INTEGER,*PCLUSPROP_ULARGE_INTEGER; | 
 
 
 
 
 | 806 |  | 
 
 
 
 
 | 807 | typedef struct CLUSPROP_LARGE_INTEGER | 
 
 
 
 
 | 808 | #ifdef __cplusplus | 
 
 
 
 
 | 809 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 810 | #endif | 
 
 
 
 
 | 811 | { | 
 
 
 
 
 | 812 | #ifndef __cplusplus | 
 
 
 
 
 | 813 | CLUSPROP_VALUE; | 
 
 
 
 
 | 814 | #endif | 
 
 
 
 
 | 815 | LARGE_INTEGER li; | 
 
 
 
 
 | 816 | } CLUSPROP_LARGE_INTEGER,*PCLUSPROP_LARGE_INTEGER; | 
 
 
 
 
 | 817 |  | 
 
 
 
 
 | 818 | typedef struct CLUSPROP_SECURITY_DESCRIPTOR | 
 
 
 
 
 | 819 | #ifdef __cplusplus | 
 
 
 
 
 | 820 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 821 | #endif | 
 
 
 
 
 | 822 | { | 
 
 
 
 
 | 823 | #ifndef __cplusplus | 
 
 
 
 
 | 824 | CLUSPROP_VALUE; | 
 
 
 
 
 | 825 | #endif | 
 
 
 
 
 | 826 | __C89_NAMELESS union { | 
 
 
 
 
 | 827 | SECURITY_DESCRIPTOR_RELATIVE sd; | 
 
 
 
 
 | 828 | BYTE rgbSecurityDescriptor[1]; | 
 
 
 
 
 | 829 | }; | 
 
 
 
 
 | 830 | } CLUSPROP_SECURITY_DESCRIPTOR,*PCLUSPROP_SECURITY_DESCRIPTOR; | 
 
 
 
 
 | 831 |  | 
 
 
 
 
 | 832 | typedef struct CLUS_RESOURCE_CLASS_INFO { | 
 
 
 
 
 | 833 | __C89_NAMELESS union { | 
 
 
 
 
 | 834 | __C89_NAMELESS struct { | 
 
 
 
 
 | 835 | __C89_NAMELESS union { | 
 
 
 
 
 | 836 | DWORD dw; | 
 
 
 
 
 | 837 | CLUSTER_RESOURCE_CLASS rc; | 
 
 
 
 
 | 838 | }; | 
 
 
 
 
 | 839 | DWORD SubClass; | 
 
 
 
 
 | 840 | }; | 
 
 
 
 
 | 841 | ULARGE_INTEGER li; | 
 
 
 
 
 | 842 | }; | 
 
 
 
 
 | 843 | } CLUS_RESOURCE_CLASS_INFO,*PCLUS_RESOURCE_CLASS_INFO; | 
 
 
 
 
 | 844 |  | 
 
 
 
 
 | 845 | typedef struct CLUSPROP_RESOURCE_CLASS | 
 
 
 
 
 | 846 | #ifdef __cplusplus | 
 
 
 
 
 | 847 | : public CLUSPROP_VALUE | 
 
 
 
 
 | 848 | #endif | 
 
 
 
 
 | 849 | { | 
 
 
 
 
 | 850 | #ifndef __cplusplus | 
 
 
 
 
 | 851 | CLUSPROP_VALUE; | 
 
 
 
 
 | 852 | #endif | 
 
 
 
 
 | 853 | CLUSTER_RESOURCE_CLASS rc; | 
 
 
 
 
 | 854 | } CLUSPROP_RESOURCE_CLASS,*PCLUSPROP_RESOURCE_CLASS; | 
 
 
 
 
 | 855 |  | 
 
 
 
 
 | 856 | typedef struct CLUSPROP_RESOURCE_CLASS_INFO | 
 
 
 
 
 | 857 | #ifdef __cplusplus | 
 
 
 
 
 | 858 | : public CLUSPROP_VALUE,public CLUS_RESOURCE_CLASS_INFO | 
 
 
 
 
 | 859 | #endif | 
 
 
 
 
 | 860 | { | 
 
 
 
 
 | 861 | #ifndef __cplusplus | 
 
 
 
 
 | 862 | CLUSPROP_VALUE; | 
 
 
 
 
 | 863 | CLUS_RESOURCE_CLASS_INFO; | 
 
 
 
 
 | 864 | #endif | 
 
 
 
 
 | 865 | } CLUSPROP_RESOURCE_CLASS_INFO,*PCLUSPROP_RESOURCE_CLASS_INFO; | 
 
 
 
 
 | 866 |  | 
 
 
 
 
 | 867 | typedef union CLUSPROP_REQUIRED_DEPENDENCY { | 
 
 
 
 
 | 868 | CLUSPROP_VALUE Value; | 
 
 
 
 
 | 869 | CLUSPROP_RESOURCE_CLASS ResClass; | 
 
 
 
 
 | 870 | CLUSPROP_SZ ResTypeName; | 
 
 
 
 
 | 871 | } CLUSPROP_REQUIRED_DEPENDENCY,*PCLUSPROP_REQUIRED_DEPENDENCY; | 
 
 
 
 
 | 872 |  | 
 
 
 
 
 | 873 | typedef CLUSPROP_DWORD CLUSPROP_DISK_NUMBER,*PCLUSPROP_DISK_NUMBER; | 
 
 
 
 
 | 874 | #endif | 
 
 
 
 
 | 875 |  | 
 
 
 
 
 | 876 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 877 | typedef enum CLUSPROP_PIFLAGS { | 
 
 
 
 
 | 878 | CLUSPROP_PIFLAG_STICKY = 0x00000001,CLUSPROP_PIFLAG_REMOVABLE = 0x00000002,CLUSPROP_PIFLAG_USABLE = 0x00000004, | 
 
 
 
 
 | 879 | CLUSPROP_PIFLAG_DEFAULT_QUORUM = 0x00000008 | 
 
 
 
 
 | 880 | } CLUSPROP_PIFLAGS; | 
 
 
 
 
 | 881 |  | 
 
 
 
 
 | 882 | typedef struct CLUS_FORCE_QUORUM_INFO { | 
 
 
 
 
 | 883 | DWORD dwSize; | 
 
 
 
 
 | 884 | DWORD dwNodeBitMask; | 
 
 
 
 
 | 885 | DWORD dwMaxNumberofNodes; | 
 
 
 
 
 | 886 | WCHAR multiszNodeList[1]; | 
 
 
 
 
 | 887 | } CLUS_FORCE_QUORUM_INFO,*PCLUS_FORCE_QUORUM_INFO; | 
 
 
 
 
 | 888 |  | 
 
 
 
 
 | 889 | typedef struct CLUS_PARTITION_INFO { | 
 
 
 
 
 | 890 | DWORD dwFlags; | 
 
 
 
 
 | 891 | WCHAR szDeviceName[MAX_PATH]; | 
 
 
 
 
 | 892 | WCHAR szVolumeLabel[MAX_PATH]; | 
 
 
 
 
 | 893 | DWORD dwSerialNumber; | 
 
 
 
 
 | 894 | DWORD rgdwMaximumComponentLength; | 
 
 
 
 
 | 895 | DWORD dwFileSystemFlags; | 
 
 
 
 
 | 896 | WCHAR szFileSystem[32]; | 
 
 
 
 
 | 897 | } CLUS_PARTITION_INFO,*PCLUS_PARTITION_INFO; | 
 
 
 
 
 | 898 |  | 
 
 
 
 
 | 899 | typedef struct CLUSPROP_PARTITION_INFO | 
 
 
 
 
 | 900 | #ifdef __cplusplus | 
 
 
 
 
 | 901 | : public CLUSPROP_VALUE,public CLUS_PARTITION_INFO | 
 
 
 
 
 | 902 | #endif | 
 
 
 
 
 | 903 | { | 
 
 
 
 
 | 904 | #ifndef __cplusplus | 
 
 
 
 
 | 905 | CLUSPROP_VALUE; | 
 
 
 
 
 | 906 | CLUS_PARTITION_INFO; | 
 
 
 
 
 | 907 | #endif | 
 
 
 
 
 | 908 | } CLUSPROP_PARTITION_INFO,*PCLUSPROP_PARTITION_INFO; | 
 
 
 
 
 | 909 |  | 
 
 
 
 
 | 910 | typedef struct CLUS_FTSET_INFO { | 
 
 
 
 
 | 911 | DWORD dwRootSignature; | 
 
 
 
 
 | 912 | DWORD dwFtType; | 
 
 
 
 
 | 913 | } CLUS_FTSET_INFO,*PCLUS_FTSET_INFO; | 
 
 
 
 
 | 914 |  | 
 
 
 
 
 | 915 | typedef struct CLUSPROP_FTSET_INFO | 
 
 
 
 
 | 916 | #ifdef __cplusplus | 
 
 
 
 
 | 917 | : public CLUSPROP_VALUE,public CLUS_FTSET_INFO | 
 
 
 
 
 | 918 | #endif | 
 
 
 
 
 | 919 | { | 
 
 
 
 
 | 920 | #ifndef __cplusplus | 
 
 
 
 
 | 921 | CLUSPROP_VALUE; | 
 
 
 
 
 | 922 | CLUS_FTSET_INFO; | 
 
 
 
 
 | 923 | #endif | 
 
 
 
 
 | 924 | } CLUSPROP_FTSET_INFO,*PCLUSPROP_FTSET_INFO; | 
 
 
 
 
 | 925 |  | 
 
 
 
 
 | 926 | typedef CLUSPROP_DWORD CLUSPROP_DISK_SIGNATURE,*PCLUSPROP_DISK_SIGNATURE; | 
 
 
 
 
 | 927 | typedef struct CLUS_SCSI_ADDRESS { | 
 
 
 
 
 | 928 | __C89_NAMELESS union { | 
 
 
 
 
 | 929 | __C89_NAMELESS struct { | 
 
 
 
 
 | 930 | UCHAR PortNumber; | 
 
 
 
 
 | 931 | UCHAR PathId; | 
 
 
 
 
 | 932 | UCHAR TargetId; | 
 
 
 
 
 | 933 | UCHAR Lun; | 
 
 
 
 
 | 934 | }; | 
 
 
 
 
 | 935 | DWORD dw; | 
 
 
 
 
 | 936 | }; | 
 
 
 
 
 | 937 | } CLUS_SCSI_ADDRESS,*PCLUS_SCSI_ADDRESS; | 
 
 
 
 
 | 938 |  | 
 
 
 
 
 | 939 | typedef struct CLUSPROP_SCSI_ADDRESS | 
 
 
 
 
 | 940 | #ifdef __cplusplus | 
 
 
 
 
 | 941 | : public CLUSPROP_VALUE,public CLUS_SCSI_ADDRESS | 
 
 
 
 
 | 942 | #endif | 
 
 
 
 
 | 943 | { | 
 
 
 
 
 | 944 | #ifndef __cplusplus | 
 
 
 
 
 | 945 | CLUSPROP_VALUE; | 
 
 
 
 
 | 946 | CLUS_SCSI_ADDRESS; | 
 
 
 
 
 | 947 | #endif | 
 
 
 
 
 | 948 | } CLUSPROP_SCSI_ADDRESS,*PCLUSPROP_SCSI_ADDRESS; | 
 
 
 
 
 | 949 |  | 
 
 
 
 
 | 950 | typedef struct CLUS_NETNAME_VS_TOKEN_INFO { | 
 
 
 
 
 | 951 | DWORD ProcessID; | 
 
 
 
 
 | 952 | DWORD DesiredAccess; | 
 
 
 
 
 | 953 | WINBOOL InheritHandle; | 
 
 
 
 
 | 954 | } CLUS_NETNAME_VS_TOKEN_INFO,*PCLUS_NETNAME_VS_TOKEN_INFO; | 
 
 
 
 
 | 955 |  | 
 
 
 
 
 | 956 | typedef struct CLUS_MAINTENANCE_MODE_INFO { | 
 
 
 
 
 | 957 | WINBOOL InMaintenance; | 
 
 
 
 
 | 958 | } CLUS_MAINTENANCE_MODE_INFO,*PCLUS_MAINTENANCE_MODE_INFO; | 
 
 
 
 
 | 959 |  | 
 
 
 
 
 | 960 | typedef struct CLUSPROP_LIST { | 
 
 
 
 
 | 961 | DWORD nPropertyCount; | 
 
 
 
 
 | 962 | CLUSPROP_PROPERTY_NAME PropertyName; | 
 
 
 
 
 | 963 | } CLUSPROP_LIST,*PCLUSPROP_LIST; | 
 
 
 
 
 | 964 |  | 
 
 
 
 
 | 965 | typedef union CLUSPROP_BUFFER_HELPER { | 
 
 
 
 
 | 966 | BYTE *pb; | 
 
 
 
 
 | 967 | WORD *pw; | 
 
 
 
 
 | 968 | DWORD *pdw; | 
 
 
 
 
 | 969 | LONG *pl; | 
 
 
 
 
 | 970 | LPWSTR psz; | 
 
 
 
 
 | 971 | PCLUSPROP_LIST pList; | 
 
 
 
 
 | 972 | PCLUSPROP_SYNTAX pSyntax; | 
 
 
 
 
 | 973 | PCLUSPROP_PROPERTY_NAME pName; | 
 
 
 
 
 | 974 | PCLUSPROP_VALUE pValue; | 
 
 
 
 
 | 975 | PCLUSPROP_BINARY pBinaryValue; | 
 
 
 
 
 | 976 | PCLUSPROP_WORD pWordValue; | 
 
 
 
 
 | 977 | PCLUSPROP_DWORD pDwordValue; | 
 
 
 
 
 | 978 | PCLUSPROP_LONG pLongValue; | 
 
 
 
 
 | 979 | PCLUSPROP_ULARGE_INTEGER pULargeIntegerValue; | 
 
 
 
 
 | 980 | PCLUSPROP_LARGE_INTEGER pLargeIntegerValue; | 
 
 
 
 
 | 981 | PCLUSPROP_SZ pStringValue; | 
 
 
 
 
 | 982 | PCLUSPROP_MULTI_SZ pMultiSzValue; | 
 
 
 
 
 | 983 | PCLUSPROP_SECURITY_DESCRIPTOR pSecurityDescriptor; | 
 
 
 
 
 | 984 | PCLUSPROP_RESOURCE_CLASS pResourceClassValue; | 
 
 
 
 
 | 985 | PCLUSPROP_RESOURCE_CLASS_INFO pResourceClassInfoValue; | 
 
 
 
 
 | 986 | PCLUSPROP_DISK_SIGNATURE pDiskSignatureValue; | 
 
 
 
 
 | 987 | PCLUSPROP_SCSI_ADDRESS pScsiAddressValue; | 
 
 
 
 
 | 988 | PCLUSPROP_DISK_NUMBER pDiskNumberValue; | 
 
 
 
 
 | 989 | PCLUSPROP_PARTITION_INFO pPartitionInfoValue; | 
 
 
 
 
 | 990 | PCLUSPROP_REQUIRED_DEPENDENCY pRequiredDependencyValue; | 
 
 
 
 
 | 991 | } CLUSPROP_BUFFER_HELPER,*PCLUSPROP_BUFFER_HELPER; | 
 
 
 
 
 | 992 | #endif | 
 
 
 
 
 | 993 |  | 
 
 
 
 
 | 994 | #define ALIGN_CLUSPROP(count) ((count + 3) & ~3) | 
 
 
 
 
 | 995 | #define CLUSPROP_BINARY_DECLARE(name,cb) struct { CLUSPROP_SYNTAX Syntax; DWORD cbLength; BYTE rgb[(cb + 3) & ~3]; } name | 
 
 
 
 
 | 996 | #define CLUSPROP_SZ_DECLARE(name,cch) struct { CLUSPROP_SYNTAX Syntax; DWORD cbLength; WCHAR sz[(cch + 1) & ~1]; } name | 
 
 
 
 
 | 997 | #define CLUSPROP_PROPERTY_NAME_DECLARE(name,cch) CLUSPROP_SZ_DECLARE(name,cch) | 
 
 
 
 
 | 998 |  | 
 
 
 
 
 | 999 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 1000 | typedef enum CLUSTER_RESOURCE_ENUM { | 
 
 
 
 
 | 1001 | CLUSTER_RESOURCE_ENUM_DEPENDS = 0x00000001,CLUSTER_RESOURCE_ENUM_PROVIDES = 0x00000002,CLUSTER_RESOURCE_ENUM_NODES = 0x00000004, | 
 
 
 
 
 | 1002 | CLUSTER_RESOURCE_ENUM_ALL = (CLUSTER_RESOURCE_ENUM_DEPENDS | CLUSTER_RESOURCE_ENUM_PROVIDES | CLUSTER_RESOURCE_ENUM_NODES) | 
 
 
 
 
 | 1003 | } CLUSTER_RESOURCE_ENUM; | 
 
 
 
 
 | 1004 |  | 
 
 
 
 
 | 1005 | typedef enum CLUSTER_RESOURCE_TYPE_ENUM { | 
 
 
 
 
 | 1006 | CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001, | 
 
 
 
 
 | 1007 | CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES = 0x00000002, | 
 
 
 
 
 | 1008 | CLUSTER_RESOURCE_TYPE_ENUM_ALL = (CLUSTER_RESOURCE_TYPE_ENUM_NODES | CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES) | 
 
 
 
 
 | 1009 | } CLUSTER_RESOURCE_TYPE_ENUM; | 
 
 
 
 
 | 1010 | #endif | 
 
 
 
 
 | 1011 |  | 
 
 
 
 
 | 1012 | HRESENUM WINAPI ClusterResourceOpenEnum(HRESOURCE hResource,DWORD dwType); | 
 
 
 
 
 | 1013 | DWORD WINAPI ClusterResourceGetEnumCount(HRESENUM hResEnum); | 
 
 
 
 
 | 1014 | DWORD WINAPI ClusterResourceEnum(HRESENUM hResEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName); | 
 
 
 
 
 | 1015 | DWORD WINAPI ClusterResourceCloseEnum(HRESENUM hResEnum); | 
 
 
 
 
 | 1016 | DWORD WINAPI CreateClusterResourceType(HCLUSTER hCluster,LPCWSTR lpszResourceTypeName,LPCWSTR lpszDisplayName,LPCWSTR lpszResourceTypeDll,DWORD dwLooksAlivePollInterval,DWORD dwIsAlivePollInterval); | 
 
 
 
 
 | 1017 | DWORD WINAPI DeleteClusterResourceType(HCLUSTER hCluster,LPCWSTR lpszResourceTypeName); | 
 
 
 
 
 | 1018 | HRESTYPEENUM WINAPI ClusterResourceTypeOpenEnum(HCLUSTER hCluster,LPCWSTR lpszResourceTypeName,DWORD dwType); | 
 
 
 
 
 | 1019 | DWORD WINAPI ClusterResourceTypeGetEnumCount(HRESTYPEENUM hResTypeEnum); | 
 
 
 
 
 | 1020 | DWORD WINAPI ClusterResourceTypeEnum(HRESTYPEENUM hResTypeEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName); | 
 
 
 
 
 | 1021 | DWORD WINAPI ClusterResourceTypeCloseEnum(HRESTYPEENUM hResTypeEnum); | 
 
 
 
 
 | 1022 |  | 
 
 
 
 
 | 1023 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 1024 | typedef enum CLUSTER_NETWORK_ENUM { | 
 
 
 
 
 | 1025 | CLUSTER_NETWORK_ENUM_NETINTERFACES = 0x00000001,CLUSTER_NETWORK_ENUM_ALL = CLUSTER_NETWORK_ENUM_NETINTERFACES | 
 
 
 
 
 | 1026 | } CLUSTER_NETWORK_ENUM; | 
 
 
 
 
 | 1027 |  | 
 
 
 
 
 | 1028 | typedef enum CLUSTER_NETWORK_STATE { | 
 
 
 
 
 | 1029 | ClusterNetworkStateUnknown = -1,ClusterNetworkUnavailable,ClusterNetworkDown,ClusterNetworkPartitioned,ClusterNetworkUp | 
 
 
 
 
 | 1030 | } CLUSTER_NETWORK_STATE; | 
 
 
 
 
 | 1031 |  | 
 
 
 
 
 | 1032 | typedef enum CLUSTER_NETWORK_ROLE { | 
 
 
 
 
 | 1033 | ClusterNetworkRoleNone = 0,ClusterNetworkRoleInternalUse = 0x00000001,ClusterNetworkRoleClientAccess = 0x00000002, | 
 
 
 
 
 | 1034 | ClusterNetworkRoleInternalAndClient = 0x00000003 | 
 
 
 
 
 | 1035 | } CLUSTER_NETWORK_ROLE; | 
 
 
 
 
 | 1036 | #endif | 
 
 
 
 
 | 1037 |  | 
 
 
 
 
 | 1038 | HNETWORK WINAPI OpenClusterNetwork(HCLUSTER hCluster,LPCWSTR lpszNetworkName); | 
 
 
 
 
 | 1039 | WINBOOL WINAPI CloseClusterNetwork(HNETWORK hNetwork); | 
 
 
 
 
 | 1040 | HCLUSTER WINAPI GetClusterFromNetwork(HNETWORK hNetwork); | 
 
 
 
 
 | 1041 | HNETWORKENUM WINAPI ClusterNetworkOpenEnum(HNETWORK hNetwork,DWORD dwType); | 
 
 
 
 
 | 1042 | DWORD WINAPI ClusterNetworkGetEnumCount(HNETWORKENUM hNetworkEnum); | 
 
 
 
 
 | 1043 | DWORD WINAPI ClusterNetworkEnum(HNETWORKENUM hNetworkEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName); | 
 
 
 
 
 | 1044 | DWORD WINAPI ClusterNetworkCloseEnum(HNETWORKENUM hNetworkEnum); | 
 
 
 
 
 | 1045 | CLUSTER_NETWORK_STATE WINAPI GetClusterNetworkState(HNETWORK hNetwork); | 
 
 
 
 
 | 1046 | DWORD WINAPI SetClusterNetworkName(HNETWORK hNetwork,LPCWSTR lpszName); | 
 
 
 
 
 | 1047 | DWORD WINAPI GetClusterNetworkId(HNETWORK hNetwork,LPWSTR lpszNetworkId,LPDWORD lpcchName); | 
 
 
 
 
 | 1048 | DWORD WINAPI ClusterNetworkControl(HNETWORK hNetwork,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned); | 
 
 
 
 
 | 1049 |  | 
 
 
 
 
 | 1050 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 1051 | typedef enum CLUSTER_NETINTERFACE_STATE { | 
 
 
 
 
 | 1052 | ClusterNetInterfaceStateUnknown = -1,ClusterNetInterfaceUnavailable,ClusterNetInterfaceFailed,ClusterNetInterfaceUnreachable,ClusterNetInterfaceUp | 
 
 
 
 
 | 1053 | } CLUSTER_NETINTERFACE_STATE; | 
 
 
 
 
 | 1054 | #endif | 
 
 
 
 
 | 1055 |  | 
 
 
 
 
 | 1056 | HNETINTERFACE WINAPI OpenClusterNetInterface(HCLUSTER hCluster,LPCWSTR lpszInterfaceName); | 
 
 
 
 
 | 1057 | DWORD WINAPI GetClusterNetInterface(HCLUSTER hCluster,LPCWSTR lpszNodeName,LPCWSTR lpszNetworkName,LPWSTR lpszInterfaceName,LPDWORD lpcchInterfaceName); | 
 
 
 
 
 | 1058 | WINBOOL WINAPI CloseClusterNetInterface(HNETINTERFACE hNetInterface); | 
 
 
 
 
 | 1059 | HCLUSTER WINAPI GetClusterFromNetInterface(HNETINTERFACE hNetInterface); | 
 
 
 
 
 | 1060 | CLUSTER_NETINTERFACE_STATE WINAPI GetClusterNetInterfaceState(HNETINTERFACE hNetInterface); | 
 
 
 
 
 | 1061 | DWORD WINAPI ClusterNetInterfaceControl(HNETINTERFACE hNetInterface,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned); | 
 
 
 
 
 | 1062 | HKEY WINAPI GetClusterKey(HCLUSTER hCluster,REGSAM samDesired); | 
 
 
 
 
 | 1063 | HKEY WINAPI GetClusterGroupKey(HGROUP hGroup,REGSAM samDesired); | 
 
 
 
 
 | 1064 | HKEY WINAPI GetClusterResourceKey(HRESOURCE hResource,REGSAM samDesired); | 
 
 
 
 
 | 1065 | HKEY WINAPI GetClusterNodeKey(HNODE hNode,REGSAM samDesired); | 
 
 
 
 
 | 1066 | HKEY WINAPI GetClusterNetworkKey(HNETWORK hNetwork,REGSAM samDesired); | 
 
 
 
 
 | 1067 | HKEY WINAPI GetClusterNetInterfaceKey(HNETINTERFACE hNetInterface,REGSAM samDesired); | 
 
 
 
 
 | 1068 | LONG WINAPI ClusterRegCreateKey(HKEY hKey,LPCWSTR lpszSubKey,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition); | 
 
 
 
 
 | 1069 | LONG WINAPI ClusterRegOpenKey(HKEY hKey,LPCWSTR lpszSubKey,REGSAM samDesired,PHKEY phkResult); | 
 
 
 
 
 | 1070 | LONG WINAPI ClusterRegDeleteKey(HKEY hKey,LPCWSTR lpszSubKey); | 
 
 
 
 
 | 1071 | LONG WINAPI ClusterRegCloseKey(HKEY hKey); | 
 
 
 
 
 | 1072 | LONG WINAPI ClusterRegEnumKey(HKEY hKey,DWORD dwIndex,LPWSTR lpszName,LPDWORD lpcchName,PFILETIME lpftLastWriteTime); | 
 
 
 
 
 | 1073 | DWORD WINAPI ClusterRegSetValue(HKEY hKey,LPCWSTR lpszValueName,DWORD dwType,CONST BYTE *lpData,DWORD cbData); | 
 
 
 
 
 | 1074 | DWORD WINAPI ClusterRegDeleteValue(HKEY hKey,LPCWSTR lpszValueName); | 
 
 
 
 
 | 1075 | LONG WINAPI ClusterRegQueryValue(HKEY hKey,LPCWSTR lpszValueName,LPDWORD lpdwValueType,LPBYTE lpData,LPDWORD lpcbData); | 
 
 
 
 
 | 1076 | DWORD WINAPI ClusterRegEnumValue(HKEY hKey,DWORD dwIndex,LPWSTR lpszValueName,LPDWORD lpcchValueName,LPDWORD lpdwType,LPBYTE lpData,LPDWORD lpcbData); | 
 
 
 
 
 | 1077 | LONG WINAPI ClusterRegQueryInfoKey(HKEY hKey,LPDWORD lpcSubKeys,LPDWORD lpcchMaxSubKeyLen,LPDWORD lpcValues,LPDWORD lpcchMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime); | 
 
 
 
 
 | 1078 | LONG WINAPI ClusterRegGetKeySecurity (HKEY hKey,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD lpcbSecurityDescriptor); | 
 
 
 
 
 | 1079 | LONG WINAPI ClusterRegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor); | 
 
 
 
 
 | 1080 |  | 
 
 
 
 
 | 1081 | typedef HCLUSTER (WINAPI *PCLUSAPI_OPEN_CLUSTER)( | 
 
 
 
 
 | 1082 | LPCWSTR lpszClusterName | 
 
 
 
 
 | 1083 | ); | 
 
 
 
 
 | 1084 |  | 
 
 
 
 
 | 1085 | #if (_WIN32_WINNT >= 0x0600) | 
 
 
 
 
 | 1086 | #define FS_CASE_SENSITIVE 1 | 
 
 
 
 
 | 1087 | #define FS_CASE_IS_PRESERVED 2 | 
 
 
 
 
 | 1088 | #define FS_UNICODE_STORED_ON_DISK 3 | 
 
 
 
 
 | 1089 | #define FS_PERSISTENT_ACLS 4 | 
 
 
 
 
 | 1090 |  | 
 
 
 
 
 | 1091 | typedef enum _MAINTENANCE_MODE_TYPE_ENUM { | 
 
 
 
 
 | 1092 | MaintenanceModeTypeDisableIsAliveCheck   = 1, | 
 
 
 
 
 | 1093 | MaintenanceModeTypeOfflineResource       = 2, | 
 
 
 
 
 | 1094 | MaintenanceModeTypeUnclusterResource     = 3 | 
 
 
 
 
 | 1095 | } MAINTENANCE_MODE_TYPE_ENUM, *PMAINTENANCE_MODE_TYPE_ENUM; | 
 
 
 
 
 | 1096 |  | 
 
 
 
 
 | 1097 | typedef enum CLUSTER_RESOURCE_STATE { | 
 
 
 
 
 | 1098 | ClusterResourceStateUnknown     = -1, | 
 
 
 
 
 | 1099 | ClusterResourceInherited        = 0, | 
 
 
 
 
 | 1100 | ClusterResourceInitializing     = 1, | 
 
 
 
 
 | 1101 | ClusterResourceOnline           = 2, | 
 
 
 
 
 | 1102 | ClusterResourceOffline          = 3, | 
 
 
 
 
 | 1103 | ClusterResourceFailed           = 4, | 
 
 
 
 
 | 1104 | ClusterResourcePending          = 128,  // 0x80 | 
 
 
 
 
 | 1105 | ClusterResourceOnlinePending    = 129,  // 0x81 | 
 
 
 
 
 | 1106 | ClusterResourceOfflinePending   = 130   // 0x82 | 
 
 
 
 
 | 1107 | } CLUSTER_RESOURCE_STATE; | 
 
 
 
 
 | 1108 |  | 
 
 
 
 
 | 1109 | typedef enum _CLUSTER_REG_COMMAND { | 
 
 
 
 
 | 1110 | CLUSREG_COMMAND_NONE       = 0, | 
 
 
 
 
 | 1111 | CLUSREG_SET_VALUE          = 1, | 
 
 
 
 
 | 1112 | CLUSREG_CREATE_KEY         = 2, | 
 
 
 
 
 | 1113 | CLUSREG_DELETE_KEY         = 3, | 
 
 
 
 
 | 1114 | CLUSREG_DELETE_VALUE       = 4, | 
 
 
 
 
 | 1115 | CLUSREG_SET_KEY_SECURITY   = 5, | 
 
 
 
 
 | 1116 | CLUSREG_VALUE_DELETED      = 6, | 
 
 
 
 
 | 1117 | CLUSREG_LAST_COMMAND       = 7 | 
 
 
 
 
 | 1118 | } CLUSTER_REG_COMMAND; | 
 
 
 
 
 | 1119 |  | 
 
 
 
 
 | 1120 | typedef enum CLUSTER_GROUP_STATE { | 
 
 
 
 
 | 1121 | ClusterGroupStateUnknown    = -1, | 
 
 
 
 
 | 1122 | ClusterGroupOnline          = 0, | 
 
 
 
 
 | 1123 | ClusterGroupOffline         = 1, | 
 
 
 
 
 | 1124 | ClusterGroupFailed          = 2, | 
 
 
 
 
 | 1125 | ClusterGroupPartialOnline   = 3, | 
 
 
 
 
 | 1126 | ClusterGroupPending         = 4 | 
 
 
 
 
 | 1127 | } CLUSTER_GROUP_STATE; | 
 
 
 
 
 | 1128 |  | 
 
 
 
 
 | 1129 | typedef enum CLUSTER_QUORUM_TYPE { | 
 
 
 
 
 | 1130 | OperationalQuorum   = 0, | 
 
 
 
 
 | 1131 | ModifyQuorum        = 1 | 
 
 
 
 
 | 1132 | } CLUSTER_QUORUM_TYPE; | 
 
 
 
 
 | 1133 |  | 
 
 
 
 
 | 1134 | typedef enum CLUSTER_QUORUM_VALUE { | 
 
 
 
 
 | 1135 | CLUSTER_QUORUM_MAINTAINED   = 0, | 
 
 
 
 
 | 1136 | CLUSTER_QUORUM_LOST         = 1 | 
 
 
 
 
 | 1137 | } CLUSTER_QUORUM_VALUE; | 
 
 
 
 
 | 1138 |  | 
 
 
 
 
 | 1139 | typedef enum CLUSTER_RESOURCE_CLASS { | 
 
 
 
 
 | 1140 | CLUS_RESCLASS_UNKNOWN   = 0, | 
 
 
 
 
 | 1141 | CLUS_RESCLASS_STORAGE   = 1, | 
 
 
 
 
 | 1142 | CLUS_RESCLASS_NETWORK   = 2, | 
 
 
 
 
 | 1143 | CLUS_RESCLASS_USER      = 32768 | 
 
 
 
 
 | 1144 | } CLUSTER_RESOURCE_CLASS; | 
 
 
 
 
 | 1145 |  | 
 
 
 
 
 | 1146 | typedef enum CLUSTER_RESOURCE_CREATE_FLAGS { | 
 
 
 
 
 | 1147 | CLUSTER_RESOURCE_DEFAULT_MONITOR    = 0, | 
 
 
 
 
 | 1148 | CLUSTER_RESOURCE_SEPARATE_MONITOR   = 1, | 
 
 
 
 
 | 1149 | CLUSTER_RESOURCE_VALID_FLAGS        = 1 | 
 
 
 
 
 | 1150 | } CLUSTER_RESOURCE_CREATE_FLAGS; | 
 
 
 
 
 | 1151 |  | 
 
 
 
 
 | 1152 | typedef enum _CLUSTER_SETUP_PHASE { | 
 
 
 
 
 | 1153 | ClusterSetupPhaseInitialize                   = 1, | 
 
 
 
 
 | 1154 | ClusterSetupPhaseValidateNodeState            = 100, | 
 
 
 
 
 | 1155 | ClusterSetupPhaseValidateNetft                = 102, | 
 
 
 
 
 | 1156 | ClusterSetupPhaseValidateClusDisk             = 103, | 
 
 
 
 
 | 1157 | ClusterSetupPhaseConfigureClusSvc             = 104, | 
 
 
 
 
 | 1158 | ClusterSetupPhaseStartingClusSvc              = 105, | 
 
 
 
 
 | 1159 | ClusterSetupPhaseQueryClusterNameAccount      = 106, | 
 
 
 
 
 | 1160 | ClusterSetupPhaseValidateClusterNameAccount   = 107, | 
 
 
 
 
 | 1161 | ClusterSetupPhaseCreateClusterAccount         = 108, | 
 
 
 
 
 | 1162 | ClusterSetupPhaseConfigureClusterAccount      = 109, | 
 
 
 
 
 | 1163 | ClusterSetupPhaseFormingCluster               = 200, | 
 
 
 
 
 | 1164 | ClusterSetupPhaseAddClusterProperties         = 201, | 
 
 
 
 
 | 1165 | ClusterSetupPhaseCreateResourceTypes          = 202, | 
 
 
 
 
 | 1166 | ClusterSetupPhaseCreateGroups                 = 203, | 
 
 
 
 
 | 1167 | ClusterSetupPhaseCreateIPAddressResources     = 204, | 
 
 
 
 
 | 1168 | ClusterSetupPhaseCreateNetworkName            = 205, | 
 
 
 
 
 | 1169 | ClusterSetupPhaseClusterGroupOnline           = 206, | 
 
 
 
 
 | 1170 | ClusterSetupPhaseGettingCurrentMembership     = 300, | 
 
 
 
 
 | 1171 | ClusterSetupPhaseAddNodeToCluster             = 301, | 
 
 
 
 
 | 1172 | ClusterSetupPhaseNodeUp                       = 302, | 
 
 
 
 
 | 1173 | ClusterSetupPhaseMoveGroup                    = 400, | 
 
 
 
 
 | 1174 | ClusterSetupPhaseDeleteGroup                  = 401, | 
 
 
 
 
 | 1175 | ClusterSetupPhaseCleanupCOs                   = 402, | 
 
 
 
 
 | 1176 | ClusterSetupPhaseOfflineGroup                 = 403, | 
 
 
 
 
 | 1177 | ClusterSetupPhaseEvictNode                    = 404, | 
 
 
 
 
 | 1178 | ClusterSetupPhaseCleanupNode                  = 405, | 
 
 
 
 
 | 1179 | ClusterSetupPhaseCoreGroupCleanup             = 406, | 
 
 
 
 
 | 1180 | ClusterSetupPhaseFailureCleanup               = 999 | 
 
 
 
 
 | 1181 | } CLUSTER_SETUP_PHASE; | 
 
 
 
 
 | 1182 |  | 
 
 
 
 
 | 1183 | typedef enum _CLUSTER_SETUP_PHASE_TYPE { | 
 
 
 
 
 | 1184 | ClusterSetupPhaseStart      = 1, | 
 
 
 
 
 | 1185 | ClusterSetupPhaseContinue   = 2, | 
 
 
 
 
 | 1186 | ClusterSetupPhaseEnd        = 3 | 
 
 
 
 
 | 1187 | } CLUSTER_SETUP_PHASE_TYPE; | 
 
 
 
 
 | 1188 |  | 
 
 
 
 
 | 1189 | typedef enum _CLUSTER_SETUP_PHASE_SEVERITY { | 
 
 
 
 
 | 1190 | ClusterSetupPhaseInformational   = 1, | 
 
 
 
 
 | 1191 | ClusterSetupPhaseWarning         = 2, | 
 
 
 
 
 | 1192 | ClusterSetupPhaseFatal           = 3 | 
 
 
 
 
 | 1193 | } CLUSTER_SETUP_PHASE_SEVERITY; | 
 
 
 
 
 | 1194 |  | 
 
 
 
 
 | 1195 | typedef struct _CLUSPROP_FILETIME { | 
 
 
 
 
 | 1196 | CLUSPROP_SYNTAX Syntax; | 
 
 
 
 
 | 1197 | DWORD           cbLength; | 
 
 
 
 
 | 1198 | FILETIME        ft; | 
 
 
 
 
 | 1199 | } CLUSPROP_FILETIME, *PCLUSPROP_FILETIME; | 
 
 
 
 
 | 1200 |  | 
 
 
 
 
 | 1201 | typedef struct _CLUS_MAINTENANCE_MODE_INFOEX { | 
 
 
 
 
 | 1202 | WINBOOL                    InMaintenance; | 
 
 
 
 
 | 1203 | MAINTENANCE_MODE_TYPE_ENUM MaintainenceModeType; | 
 
 
 
 
 | 1204 | CLUSTER_RESOURCE_STATE     InternalState; | 
 
 
 
 
 | 1205 | DWORD                      Signature; | 
 
 
 
 
 | 1206 | } CLUS_MAINTENANCE_MODE_INFOEX, *PCLUS_MAINTENANCE_MODE_INFOEX; | 
 
 
 
 
 | 1207 |  | 
 
 
 
 
 | 1208 | typedef struct CLUS_NETNAME_PWD_INFO { | 
 
 
 
 
 | 1209 | DWORD Flags; | 
 
 
 
 
 | 1210 | WCHAR Password[MAX_CO_PASSWORD_LENGTH]; | 
 
 
 
 
 | 1211 | WCHAR CreatingDC[MAX_CREATINGDC_LENGTH+2]; | 
 
 
 
 
 | 1212 | WCHAR ObjectGuid[MAX_OBJECTID]; | 
 
 
 
 
 | 1213 | } CLUS_NETNAME_PWD_INFO, *PCLUS_NETNAME_PWD_INFO; | 
 
 
 
 
 | 1214 |  | 
 
 
 
 
 | 1215 | typedef struct CLUS_NETNAME_VS_TOKEN_INFO { | 
 
 
 
 
 | 1216 | DWORD   ProcessID; | 
 
 
 
 
 | 1217 | DWORD   DesiredAccess; | 
 
 
 
 
 | 1218 | WINBOOL InheritHandle; | 
 
 
 
 
 | 1219 | } CLUS_NETNAME_VS_TOKEN_INFO, *PCLUS_NETNAME_VS_TOKEN_INFO; | 
 
 
 
 
 | 1220 |  | 
 
 
 
 
 | 1221 | typedef struct CLUS_PARTITION_INFO_EX { | 
 
 
 
 
 | 1222 | DWORD          dwFlags; | 
 
 
 
 
 | 1223 | WCHAR          szDeviceName[MAX_PATH]; | 
 
 
 
 
 | 1224 | WCHAR          szVolumeLabel[MAX_PATH]; | 
 
 
 
 
 | 1225 | DWORD          dwSerialNumber; | 
 
 
 
 
 | 1226 | DWORD          rgdwMaximumComponentLength; | 
 
 
 
 
 | 1227 | DWORD          dwFileSystemFlags; | 
 
 
 
 
 | 1228 | WCHAR          szFileSystem[32]; | 
 
 
 
 
 | 1229 | ULARGE_INTEGER TotalSizeInBytes; | 
 
 
 
 
 | 1230 | ULARGE_INTEGER FreeSizeInBytes; | 
 
 
 
 
 | 1231 | DWORD          DeviceNumber; | 
 
 
 
 
 | 1232 | DWORD          PartitionNumber; | 
 
 
 
 
 | 1233 | GUID           VolumeGuid; | 
 
 
 
 
 | 1234 | } CLUS_PARTITION_INFO_EX, *PCLUS_PARTITION_INFO_EX; | 
 
 
 
 
 | 1235 |  | 
 
 
 
 
 | 1236 | typedef struct _CLUS_PROVIDER_STATE_CHANGE_INFO { | 
 
 
 
 
 | 1237 | DWORD                  dwSize; | 
 
 
 
 
 | 1238 | CLUSTER_RESOURCE_STATE resourceState; | 
 
 
 
 
 | 1239 | WCHAR                  szProviderId[1]; | 
 
 
 
 
 | 1240 | } CLUS_PROVIDER_STATE_CHANGE_INFO, *PCLUS_PROVIDER_STATE_CHANGE_INFO; | 
 
 
 
 
 | 1241 |  | 
 
 
 
 
 | 1242 | typedef struct _CLUS_STORAGE_GET_AVAILABLE_DRIVELETTERS { | 
 
 
 
 
 | 1243 | DWORD AvailDrivelettersMask; | 
 
 
 
 
 | 1244 | } CLUS_STORAGE_GET_AVAILABLE_DRIVELETTERS, *PCLUS_STORAGE_GET_AVAILABLE_DRIVELETTERS; | 
 
 
 
 
 | 1245 |  | 
 
 
 
 
 | 1246 | typedef struct _CLUS_STORAGE_REMAP_DRIVELETTER { | 
 
 
 
 
 | 1247 | DWORD CurrentDriveLetterMask; | 
 
 
 
 
 | 1248 | DWORD TargetDriveLetterMask; | 
 
 
 
 
 | 1249 | } CLUS_STORAGE_REMAP_DRIVELETTER, *PCLUS_STORAGE_REMAP_DRIVELETTER; | 
 
 
 
 
 | 1250 |  | 
 
 
 
 
 | 1251 | typedef struct _CLUS_STORAGE_SET_DRIVELETTER { | 
 
 
 
 
 | 1252 | DWORD PartitionNumber; | 
 
 
 
 
 | 1253 | DWORD DriveLetterMask; | 
 
 
 
 
 | 1254 | } CLUS_STORAGE_SET_DRIVELETTER, *PCLUS_STORAGE_SET_DRIVELETTER; | 
 
 
 
 
 | 1255 |  | 
 
 
 
 
 | 1256 | typedef struct _CLUSPROP_PARTITION_INFO_EX { | 
 
 
 
 
 | 1257 | CLUSPROP_SYNTAX Syntax; | 
 
 
 
 
 | 1258 | DWORD           cbLength; | 
 
 
 
 
 | 1259 | DWORD           dwFlags; | 
 
 
 
 
 | 1260 | WCHAR           szDeviceName[MAX_PATH]; | 
 
 
 
 
 | 1261 | WCHAR           szVolumeLabel[MAX_PATH]; | 
 
 
 
 
 | 1262 | DWORD           dwSerialNumber; | 
 
 
 
 
 | 1263 | DWORD           rgdwMaximumComponentLength; | 
 
 
 
 
 | 1264 | DWORD           dwFileSystemFlags; | 
 
 
 
 
 | 1265 | WCHAR           szFileSystem[32]; | 
 
 
 
 
 | 1266 | ULARGE_INTEGER  TotalSizeInBytes; | 
 
 
 
 
 | 1267 | ULARGE_INTEGER  FreeSizeInBytes; | 
 
 
 
 
 | 1268 | DWORD           DeviceNumber; | 
 
 
 
 
 | 1269 | DWORD           PartitionNumber; | 
 
 
 
 
 | 1270 | GUID            VolumeGuid; | 
 
 
 
 
 | 1271 | } CLUSPROP_PARTITION_INFO_EX, *PCLUSPROP_PARTITION_INFO_EX; | 
 
 
 
 
 | 1272 |  | 
 
 
 
 
 | 1273 | typedef struct _CLUSTER_BATCH_COMMAND { | 
 
 
 
 
 | 1274 | CLUSTER_REG_COMMAND Command; | 
 
 
 
 
 | 1275 | DWORD               dwOptions; | 
 
 
 
 
 | 1276 | LPCWSTR             wzName; | 
 
 
 
 
 | 1277 | BYTE CONST *        lpData; | 
 
 
 
 
 | 1278 | DWORD               cbData; | 
 
 
 
 
 | 1279 | } CLUSTER_BATCH_COMMAND; | 
 
 
 
 
 | 1280 |  | 
 
 
 
 
 | 1281 | typedef struct _CLUSTER_IP_ENTRY { | 
 
 
 
 
 | 1282 | PCWSTR lpszIpAddress; | 
 
 
 
 
 | 1283 | DWORD  dwPrefixLength; | 
 
 
 
 
 | 1284 | } CLUSTER_IP_ENTRY, *PCLUSTER_IP_ENTRY; | 
 
 
 
 
 | 1285 |  | 
 
 
 
 
 | 1286 | typedef struct _CREATE_CLUSTER_CONFIG { | 
 
 
 
 
 | 1287 | DWORD             dwVersion; | 
 
 
 
 
 | 1288 | PCWSTR            lpszClusterName; | 
 
 
 
 
 | 1289 | DWORD             cNodes; | 
 
 
 
 
 | 1290 | PCWSTR            *ppszNodeNames; | 
 
 
 
 
 | 1291 | DWORD             cIpEntries; | 
 
 
 
 
 | 1292 | PCLUSTER_IP_ENTRY pIpEntries; | 
 
 
 
 
 | 1293 | BOOLEAN           fEmptyCluster; | 
 
 
 
 
 | 1294 | } CREATE_CLUSTER_CONFIG, *PCREATE_CLUSTER_CONFIG; | 
 
 
 
 
 | 1295 |  | 
 
 
 
 
 | 1296 | typedef struct _CLUSTER_VALIDATE_DIRECTORY { | 
 
 
 
 
 | 1297 | __MINGW_EXTENSION WCHAR szPath[0]; | 
 
 
 
 
 | 1298 | } CLUSTER_VALIDATE_DIRECTORY, *PCLUSTER_VALIDATE_DIRECTORY; | 
 
 
 
 
 | 1299 |  | 
 
 
 
 
 | 1300 | typedef struct _CLUSTER_VALIDATE_NETNAME { | 
 
 
 
 
 | 1301 | __MINGW_EXTENSION WCHAR szNetworkName[0]; | 
 
 
 
 
 | 1302 | } CLUSTER_VALIDATE_NETNAME, *PCLUSTER_VALIDATE_NETNAME; | 
 
 
 
 
 | 1303 |  | 
 
 
 
 
 | 1304 | typedef struct _CLUSTER_VALIDATE_PATH { | 
 
 
 
 
 | 1305 | __MINGW_EXTENSION WCHAR szPath[0]; | 
 
 
 
 
 | 1306 | } CLUSTER_VALIDATE_PATH, *PCLUSTER_VALIDATE_PATH; | 
 
 
 
 
 | 1307 |  | 
 
 
 
 
 | 1308 | typedef LPVOID HREGBATCH; | 
 
 
 
 
 | 1309 | typedef LPVOID HREGBATCHPORT; | 
 
 
 
 
 | 1310 | typedef LPVOID HREGBATCHNOTIFICATION; | 
 
 
 
 
 | 1311 |  | 
 
 
 
 
 | 1312 | LONG ClusterRegBatchAddCommand( | 
 
 
 
 
 | 1313 | HREGBATCH hRegBatch, | 
 
 
 
 
 | 1314 | CLUSTER_REG_COMMAND dwCommand, | 
 
 
 
 
 | 1315 | LPCWSTR wzName, | 
 
 
 
 
 | 1316 | DWORD dwOptions, | 
 
 
 
 
 | 1317 | VOID CONST *lpData, | 
 
 
 
 
 | 1318 | DWORD cbData | 
 
 
 
 
 | 1319 | ); | 
 
 
 
 
 | 1320 |  | 
 
 
 
 
 | 1321 | LONG WINAPI ClusterRegBatchCloseNotification( | 
 
 
 
 
 | 1322 | HREGBATCHNOTIFICATION hBatchNotification | 
 
 
 
 
 | 1323 | ); | 
 
 
 
 
 | 1324 |  | 
 
 
 
 
 | 1325 | LONG WINAPI ClusterRegBatchReadCommand( | 
 
 
 
 
 | 1326 | HREGBATCHNOTIFICATION hBatchNotification, | 
 
 
 
 
 | 1327 | CLUSTER_BATCH_COMMAND *pBatchCommand | 
 
 
 
 
 | 1328 | ); | 
 
 
 
 
 | 1329 |  | 
 
 
 
 
 | 1330 | LONG WINAPI ClusterRegCloseBatch( | 
 
 
 
 
 | 1331 | HREGBATCH hRegBatch, | 
 
 
 
 
 | 1332 | WINBOOL bCommit, | 
 
 
 
 
 | 1333 | INT *failedCommandNumber | 
 
 
 
 
 | 1334 | ); | 
 
 
 
 
 | 1335 |  | 
 
 
 
 
 | 1336 | LONG WINAPI ClusterRegCloseBatchNotifyPort( | 
 
 
 
 
 | 1337 | HREGBATCHPORT hBatchNotifyPort | 
 
 
 
 
 | 1338 | ); | 
 
 
 
 
 | 1339 |  | 
 
 
 
 
 | 1340 | typedef LONG (WINAPI *PCLUSTER_REG_CREATE_BATCH)( | 
 
 
 
 
 | 1341 | HKEY hKey, | 
 
 
 
 
 | 1342 | HREGBATCH *pHREGBATCH | 
 
 
 
 
 | 1343 | ); | 
 
 
 
 
 | 1344 |  | 
 
 
 
 
 | 1345 | LONG WINAPI ClusterRegCreateBatch( | 
 
 
 
 
 | 1346 | HKEY hKey, | 
 
 
 
 
 | 1347 | HREGBATCH *pHREGBATCH | 
 
 
 
 
 | 1348 | ); | 
 
 
 
 
 | 1349 |  | 
 
 
 
 
 | 1350 | typedef LONG (WINAPI *PCLUSTER_REG_CREATE_BATCH_NOTIFY_PORT)( | 
 
 
 
 
 | 1351 | HKEY hKey, | 
 
 
 
 
 | 1352 | HREGBATCHPORT *phBatchNotifyPort | 
 
 
 
 
 | 1353 | ); | 
 
 
 
 
 | 1354 |  | 
 
 
 
 
 | 1355 | LONG WINAPI ClusterRegCreateBatchNotifyPort( | 
 
 
 
 
 | 1356 | HKEY hKey, | 
 
 
 
 
 | 1357 | HREGBATCHPORT *phBatchNotifyPort | 
 
 
 
 
 | 1358 | ); | 
 
 
 
 
 | 1359 |  | 
 
 
 
 
 | 1360 | typedef LONG (WINAPI *PCLUSTER_REG_GET_BATCH_NOTIFICATION)( | 
 
 
 
 
 | 1361 | HREGBATCHPORT hBatchNotify, | 
 
 
 
 
 | 1362 | HREGBATCHNOTIFICATION *phBatchNotification | 
 
 
 
 
 | 1363 | ); | 
 
 
 
 
 | 1364 |  | 
 
 
 
 
 | 1365 | LONG WINAPI ClusterRegGetBatchNotification( | 
 
 
 
 
 | 1366 | HREGBATCHPORT hBatchNotify, | 
 
 
 
 
 | 1367 | HREGBATCHNOTIFICATION *phBatchNotification | 
 
 
 
 
 | 1368 | ); | 
 
 
 
 
 | 1369 |  | 
 
 
 
 
 | 1370 | typedef WINBOOL (WINAPI *PCLUSTER_SETUP_PROGRESS_CALLBACK)( | 
 
 
 
 
 | 1371 | PVOID pvCallbackArg, | 
 
 
 
 
 | 1372 | CLUSTER_SETUP_PHASE eSetupPhase, | 
 
 
 
 
 | 1373 | CLUSTER_SETUP_PHASE_TYPE ePhaseType, | 
 
 
 
 
 | 1374 | CLUSTER_SETUP_PHASE_SEVERITY ePhaseSeverity, | 
 
 
 
 
 | 1375 | DWORD dwPercentComplete, | 
 
 
 
 
 | 1376 | PCWSTR lpszObjectName, | 
 
 
 
 
 | 1377 | DWORD dwStatus | 
 
 
 
 
 | 1378 | ); | 
 
 
 
 
 | 1379 |  | 
 
 
 
 
 | 1380 | HNODE WINAPI AddClusterNode( | 
 
 
 
 
 | 1381 | HCLUSTER hCluster, | 
 
 
 
 
 | 1382 | PCWSTR lpszNodeName, | 
 
 
 
 
 | 1383 | PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback, | 
 
 
 
 
 | 1384 | PVOID pvCallbackArg | 
 
 
 
 
 | 1385 | ); | 
 
 
 
 
 | 1386 |  | 
 
 
 
 
 | 1387 | DWORD WINAPI DestroyCluster( | 
 
 
 
 
 | 1388 | HCLUSTER hCluster, | 
 
 
 
 
 | 1389 | PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback, | 
 
 
 
 
 | 1390 | PVOID pvCallbackArg, | 
 
 
 
 
 | 1391 | WINBOOL fdeleteVirtualComputerObjects | 
 
 
 
 
 | 1392 | ); | 
 
 
 
 
 | 1393 |  | 
 
 
 
 
 | 1394 | HCLUSTER WINAPI CreateCluster( | 
 
 
 
 
 | 1395 | PCREATE_CLUSTER_CONFIG pConfig, | 
 
 
 
 
 | 1396 | PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback, | 
 
 
 
 
 | 1397 | PVOID pvCallbackArg | 
 
 
 
 
 | 1398 | ); | 
 
 
 
 
 | 1399 |  | 
 
 
 
 
 | 1400 | DWORD DestroyClusterGroup( | 
 
 
 
 
 | 1401 | HGROUP hGroup | 
 
 
 
 
 | 1402 | ); | 
 
 
 
 
 | 1403 |  | 
 
 
 
 
 | 1404 | typedef enum _FILESHARE_CHANGE_ENUM { | 
 
 
 
 
 | 1405 | FILESHARE_CHANGE_NONE     = 0, | 
 
 
 
 
 | 1406 | FILESHARE_CHANGE_ADD      = 1, | 
 
 
 
 
 | 1407 | FILESHARE_CHANGE_DEL      = 2, | 
 
 
 
 
 | 1408 | FILESHARE_CHANGE_MODIFY   = 3 | 
 
 
 
 
 | 1409 | } FILESHARE_CHANGE_ENUM; | 
 
 
 
 
 | 1410 |  | 
 
 
 
 
 | 1411 | #define NNLEN       80                  /* Net name length (share name) */ | 
 
 
 
 
 | 1412 |  | 
 
 
 
 
 | 1413 | typedef struct _FILESHARE_CHANGE { | 
 
 
 
 
 | 1414 | FILESHARE_CHANGE_ENUM Change; | 
 
 
 
 
 | 1415 | WCHAR                 ShareName[NNLEN+4]; | 
 
 
 
 
 | 1416 | } FILESHARE_CHANGE, *PFILESHARE_CHANGE; | 
 
 
 
 
 | 1417 |  | 
 
 
 
 
 | 1418 | typedef struct _FILESHARE_CHANGE_LIST { | 
 
 
 
 
 | 1419 | DWORD            NumEntries; | 
 
 
 
 
 | 1420 | __MINGW_EXTENSION FILESHARE_CHANGE ChangeEntry[0]; | 
 
 
 
 
 | 1421 | } FILESHARE_CHANGE_LIST, *PFILESHARE_CHANGE_LIST; | 
 
 
 
 
 | 1422 |  | 
 
 
 
 
 | 1423 | DWORD WINAPI GetClusterResourceDependencyExpression( | 
 
 
 
 
 | 1424 | HRESOURCE hResource, | 
 
 
 
 
 | 1425 | LPWSTR lpszDependencyExpression, | 
 
 
 
 
 | 1426 | LPDWORD lpcchDependencyExpression | 
 
 
 
 
 | 1427 | ); | 
 
 
 
 
 | 1428 |  | 
 
 
 
 
 | 1429 | DWORD WINAPI SetClusterResourceDependencyExpression( | 
 
 
 
 
 | 1430 | HRESOURCE hResource, | 
 
 
 
 
 | 1431 | LPCWSTR lpszDependencyExpression | 
 
 
 
 
 | 1432 | ); | 
 
 
 
 
 | 1433 |  | 
 
 
 
 
 | 1434 | #endif /* (_WIN32_WINNT >= 0x0600) */ | 
 
 
 
 
 | 1435 | #if (_WIN32_WINNT >= 0x0601) | 
 
 
 
 
 | 1436 | typedef enum _CLUSTER_SHARED_VOLUME_BACKUP_STATE { | 
 
 
 
 
 | 1437 | VolumeBackupNone         = 0x00000000, | 
 
 
 
 
 | 1438 | VolumeBackupInProgress   = 0x00000001 | 
 
 
 
 
 | 1439 | } CLUSTER_SHARED_VOLUME_BACKUP_STATE, *PCLUSTER_SHARED_VOLUME_BACKUP_STATE; | 
 
 
 
 
 | 1440 | #endif /* (_WIN32_WINNT >= 0x0601) */ | 
 
 
 
 
 | 1441 |  | 
 
 
 
 
 | 1442 | #ifdef __cplusplus | 
 
 
 
 
 | 1443 | } | 
 
 
 
 
 | 1444 | #endif | 
 
 
 
 
 | 1445 |  | 
 
 
 
 
 | 1446 | #ifndef _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 1447 | #define _CLUSTER_API_TYPES_ | 
 
 
 
 
 | 1448 | #endif | 
 
 
 
 
 | 1449 | #endif |