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 1450