source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/clusapi.h@ 1175

Last change on this file since 1175 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 75.9 KB
Line 
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
12extern "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
1081typedef 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
1091typedef enum _MAINTENANCE_MODE_TYPE_ENUM {
1092 MaintenanceModeTypeDisableIsAliveCheck = 1,
1093 MaintenanceModeTypeOfflineResource = 2,
1094 MaintenanceModeTypeUnclusterResource = 3
1095} MAINTENANCE_MODE_TYPE_ENUM, *PMAINTENANCE_MODE_TYPE_ENUM;
1096
1097typedef 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
1109typedef 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
1120typedef 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
1129typedef enum CLUSTER_QUORUM_TYPE {
1130 OperationalQuorum = 0,
1131 ModifyQuorum = 1
1132} CLUSTER_QUORUM_TYPE;
1133
1134typedef enum CLUSTER_QUORUM_VALUE {
1135 CLUSTER_QUORUM_MAINTAINED = 0,
1136 CLUSTER_QUORUM_LOST = 1
1137} CLUSTER_QUORUM_VALUE;
1138
1139typedef 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
1146typedef 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
1152typedef 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
1183typedef enum _CLUSTER_SETUP_PHASE_TYPE {
1184 ClusterSetupPhaseStart = 1,
1185 ClusterSetupPhaseContinue = 2,
1186 ClusterSetupPhaseEnd = 3
1187} CLUSTER_SETUP_PHASE_TYPE;
1188
1189typedef enum _CLUSTER_SETUP_PHASE_SEVERITY {
1190 ClusterSetupPhaseInformational = 1,
1191 ClusterSetupPhaseWarning = 2,
1192 ClusterSetupPhaseFatal = 3
1193} CLUSTER_SETUP_PHASE_SEVERITY;
1194
1195typedef struct _CLUSPROP_FILETIME {
1196 CLUSPROP_SYNTAX Syntax;
1197 DWORD cbLength;
1198 FILETIME ft;
1199} CLUSPROP_FILETIME, *PCLUSPROP_FILETIME;
1200
1201typedef 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
1208typedef 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
1215typedef 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
1221typedef 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
1236typedef 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
1242typedef struct _CLUS_STORAGE_GET_AVAILABLE_DRIVELETTERS {
1243 DWORD AvailDrivelettersMask;
1244} CLUS_STORAGE_GET_AVAILABLE_DRIVELETTERS, *PCLUS_STORAGE_GET_AVAILABLE_DRIVELETTERS;
1245
1246typedef struct _CLUS_STORAGE_REMAP_DRIVELETTER {
1247 DWORD CurrentDriveLetterMask;
1248 DWORD TargetDriveLetterMask;
1249} CLUS_STORAGE_REMAP_DRIVELETTER, *PCLUS_STORAGE_REMAP_DRIVELETTER;
1250
1251typedef struct _CLUS_STORAGE_SET_DRIVELETTER {
1252 DWORD PartitionNumber;
1253 DWORD DriveLetterMask;
1254} CLUS_STORAGE_SET_DRIVELETTER, *PCLUS_STORAGE_SET_DRIVELETTER;
1255
1256typedef 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
1273typedef 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
1281typedef struct _CLUSTER_IP_ENTRY {
1282 PCWSTR lpszIpAddress;
1283 DWORD dwPrefixLength;
1284} CLUSTER_IP_ENTRY, *PCLUSTER_IP_ENTRY;
1285
1286typedef 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
1296typedef struct _CLUSTER_VALIDATE_DIRECTORY {
1297 __MINGW_EXTENSION WCHAR szPath[0];
1298} CLUSTER_VALIDATE_DIRECTORY, *PCLUSTER_VALIDATE_DIRECTORY;
1299
1300typedef struct _CLUSTER_VALIDATE_NETNAME {
1301 __MINGW_EXTENSION WCHAR szNetworkName[0];
1302} CLUSTER_VALIDATE_NETNAME, *PCLUSTER_VALIDATE_NETNAME;
1303
1304typedef struct _CLUSTER_VALIDATE_PATH {
1305 __MINGW_EXTENSION WCHAR szPath[0];
1306} CLUSTER_VALIDATE_PATH, *PCLUSTER_VALIDATE_PATH;
1307
1308typedef LPVOID HREGBATCH;
1309typedef LPVOID HREGBATCHPORT;
1310typedef LPVOID HREGBATCHNOTIFICATION;
1311
1312LONG ClusterRegBatchAddCommand(
1313 HREGBATCH hRegBatch,
1314 CLUSTER_REG_COMMAND dwCommand,
1315 LPCWSTR wzName,
1316 DWORD dwOptions,
1317 VOID CONST *lpData,
1318 DWORD cbData
1319);
1320
1321LONG WINAPI ClusterRegBatchCloseNotification(
1322 HREGBATCHNOTIFICATION hBatchNotification
1323);
1324
1325LONG WINAPI ClusterRegBatchReadCommand(
1326 HREGBATCHNOTIFICATION hBatchNotification,
1327 CLUSTER_BATCH_COMMAND *pBatchCommand
1328);
1329
1330LONG WINAPI ClusterRegCloseBatch(
1331 HREGBATCH hRegBatch,
1332 WINBOOL bCommit,
1333 INT *failedCommandNumber
1334);
1335
1336LONG WINAPI ClusterRegCloseBatchNotifyPort(
1337 HREGBATCHPORT hBatchNotifyPort
1338);
1339
1340typedef LONG (WINAPI *PCLUSTER_REG_CREATE_BATCH)(
1341 HKEY hKey,
1342 HREGBATCH *pHREGBATCH
1343);
1344
1345LONG WINAPI ClusterRegCreateBatch(
1346 HKEY hKey,
1347 HREGBATCH *pHREGBATCH
1348);
1349
1350typedef LONG (WINAPI *PCLUSTER_REG_CREATE_BATCH_NOTIFY_PORT)(
1351 HKEY hKey,
1352 HREGBATCHPORT *phBatchNotifyPort
1353);
1354
1355LONG WINAPI ClusterRegCreateBatchNotifyPort(
1356 HKEY hKey,
1357 HREGBATCHPORT *phBatchNotifyPort
1358);
1359
1360typedef LONG (WINAPI *PCLUSTER_REG_GET_BATCH_NOTIFICATION)(
1361 HREGBATCHPORT hBatchNotify,
1362 HREGBATCHNOTIFICATION *phBatchNotification
1363);
1364
1365LONG WINAPI ClusterRegGetBatchNotification(
1366 HREGBATCHPORT hBatchNotify,
1367 HREGBATCHNOTIFICATION *phBatchNotification
1368);
1369
1370typedef 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
1380HNODE WINAPI AddClusterNode(
1381 HCLUSTER hCluster,
1382 PCWSTR lpszNodeName,
1383 PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
1384 PVOID pvCallbackArg
1385);
1386
1387DWORD WINAPI DestroyCluster(
1388 HCLUSTER hCluster,
1389 PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
1390 PVOID pvCallbackArg,
1391 WINBOOL fdeleteVirtualComputerObjects
1392);
1393
1394HCLUSTER WINAPI CreateCluster(
1395 PCREATE_CLUSTER_CONFIG pConfig,
1396 PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
1397 PVOID pvCallbackArg
1398);
1399
1400DWORD DestroyClusterGroup(
1401 HGROUP hGroup
1402);
1403
1404typedef 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
1413typedef struct _FILESHARE_CHANGE {
1414 FILESHARE_CHANGE_ENUM Change;
1415 WCHAR ShareName[NNLEN+4];
1416} FILESHARE_CHANGE, *PFILESHARE_CHANGE;
1417
1418typedef struct _FILESHARE_CHANGE_LIST {
1419 DWORD NumEntries;
1420 __MINGW_EXTENSION FILESHARE_CHANGE ChangeEntry[0];
1421} FILESHARE_CHANGE_LIST, *PFILESHARE_CHANGE_LIST;
1422
1423DWORD WINAPI GetClusterResourceDependencyExpression(
1424 HRESOURCE hResource,
1425 LPWSTR lpszDependencyExpression,
1426 LPDWORD lpcchDependencyExpression
1427);
1428
1429DWORD WINAPI SetClusterResourceDependencyExpression(
1430 HRESOURCE hResource,
1431 LPCWSTR lpszDependencyExpression
1432);
1433
1434#endif /* (_WIN32_WINNT >= 0x0600) */
1435#if (_WIN32_WINNT >= 0x0601)
1436typedef 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
Note: See TracBrowser for help on using the repository browser.