comparison fuhtark_test/include/winapi/clusapi.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER 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,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 0x00000001L
104 #define CLUSAPI_CHANGE_ACCESS 0x00000002L
105 #define CLUSAPI_NO_ACCESS 0x00000004L
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,CLUSTER_NODE_ENUM_ALL = CLUSTER_NODE_ENUM_NETINTERFACES
170 } CLUSTER_NODE_ENUM;
171
172 typedef enum CLUSTER_NODE_STATE {
173 ClusterNodeStateUnknown = -1,ClusterNodeUp,ClusterNodeDown,ClusterNodePaused,ClusterNodeJoining
174 } CLUSTER_NODE_STATE;
175 #endif
176
177 HNODE WINAPI OpenClusterNode(HCLUSTER hCluster,LPCWSTR lpszNodeName);
178 WINBOOL WINAPI CloseClusterNode(HNODE hNode);
179 CLUSTER_NODE_STATE WINAPI GetClusterNodeState(HNODE hNode);
180 DWORD WINAPI GetClusterNodeId(HNODE hNode,LPWSTR lpszNodeId,LPDWORD lpcchName);
181 #define GetCurrentClusterNodeId(_lpszNodeId_,_lpcchName_) GetClusterNodeId(NULL,(_lpszNodeId_),(_lpcchName_))
182 HCLUSTER WINAPI GetClusterFromNode(HNODE hNode);
183 DWORD WINAPI PauseClusterNode(HNODE hNode);
184 DWORD WINAPI ResumeClusterNode(HNODE hNode);
185 DWORD WINAPI EvictClusterNode(HNODE hNode);
186 HNODEENUM WINAPI ClusterNodeOpenEnum(HNODE hNode,DWORD dwType);
187 DWORD WINAPI ClusterNodeGetEnumCount(HNODEENUM hNodeEnum);
188 DWORD WINAPI ClusterNodeCloseEnum(HNODEENUM hNodeEnum);
189 DWORD WINAPI ClusterNodeEnum(HNODEENUM hNodeEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName);
190 DWORD WINAPI EvictClusterNodeEx(HNODE hNode,DWORD dwTimeOut,HRESULT *phrCleanupStatus);
191 HKEY WINAPI GetClusterResourceTypeKey(HCLUSTER hCluster,LPCWSTR lpszTypeName,REGSAM samDesired);
192
193 #ifndef _CLUSTER_API_TYPES_
194 typedef enum CLUSTER_GROUP_ENUM {
195 CLUSTER_GROUP_ENUM_CONTAINS = 0x00000001,CLUSTER_GROUP_ENUM_NODES = 0x00000002,
196 CLUSTER_GROUP_ENUM_ALL = (CLUSTER_GROUP_ENUM_CONTAINS | CLUSTER_GROUP_ENUM_NODES)
197 } CLUSTER_GROUP_ENUM;
198
199 typedef enum CLUSTER_GROUP_STATE {
200 ClusterGroupStateUnknown = -1,ClusterGroupOnline,ClusterGroupOffline,ClusterGroupFailed,ClusterGroupPartialOnline,ClusterGroupPending
201 } CLUSTER_GROUP_STATE;
202
203 typedef enum CLUSTER_GROUP_AUTOFAILBACK_TYPE {
204 ClusterGroupPreventFailback = 0,ClusterGroupAllowFailback,ClusterGroupFailbackTypeCount
205 } CLUSTER_GROUP_AUTOFAILBACK_TYPE,CGAFT;
206 #endif
207
208 HGROUP WINAPI CreateClusterGroup(HCLUSTER hCluster,LPCWSTR lpszGroupName);
209 HGROUP WINAPI OpenClusterGroup(HCLUSTER hCluster,LPCWSTR lpszGroupName);
210 WINBOOL WINAPI CloseClusterGroup(HGROUP hGroup);
211 HCLUSTER WINAPI GetClusterFromGroup(HGROUP hGroup);
212 CLUSTER_GROUP_STATE WINAPI GetClusterGroupState(HGROUP hGroup,LPWSTR lpszNodeName,LPDWORD lpcchNodeName);
213 DWORD WINAPI SetClusterGroupName(HGROUP hGroup,LPCWSTR lpszGroupName);
214 DWORD WINAPI SetClusterGroupNodeList(HGROUP hGroup,DWORD NodeCount,HNODE NodeList[]);
215 DWORD WINAPI OnlineClusterGroup(HGROUP hGroup,HNODE hDestinationNode);
216 DWORD WINAPI MoveClusterGroup(HGROUP hGroup,HNODE hDestinationNode);
217 DWORD WINAPI OfflineClusterGroup(HGROUP hGroup);
218 DWORD WINAPI DeleteClusterGroup(HGROUP hGroup);
219 HGROUPENUM WINAPI ClusterGroupOpenEnum(HGROUP hGroup,DWORD dwType);
220 DWORD WINAPI ClusterGroupGetEnumCount(HGROUPENUM hGroupEnum);
221 DWORD WINAPI ClusterGroupEnum(HGROUPENUM hGroupEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszResourceName,LPDWORD lpcchName);
222 DWORD WINAPI ClusterGroupCloseEnum(HGROUPENUM hGroupEnum);
223
224 #ifndef _CLUSTER_API_TYPES_
225 typedef enum CLUSTER_RESOURCE_STATE {
226 ClusterResourceStateUnknown = -1,ClusterResourceInherited,ClusterResourceInitializing,ClusterResourceOnline,ClusterResourceOffline,
227 ClusterResourceFailed,ClusterResourcePending = 128,ClusterResourceOnlinePending,ClusterResourceOfflinePending
228 } CLUSTER_RESOURCE_STATE;
229
230 typedef enum CLUSTER_RESOURCE_RESTART_ACTION {
231 ClusterResourceDontRestart = 0,ClusterResourceRestartNoNotify,ClusterResourceRestartNotify,ClusterResourceRestartActionCount
232 } CLUSTER_RESOURCE_RESTART_ACTION,CRRA;
233
234 typedef enum CLUSTER_RESOURCE_CREATE_FLAGS {
235 CLUSTER_RESOURCE_DEFAULT_MONITOR = 0,CLUSTER_RESOURCE_SEPARATE_MONITOR = 1,CLUSTER_RESOURCE_VALID_FLAGS = CLUSTER_RESOURCE_SEPARATE_MONITOR
236 } CLUSTER_RESOURCE_CREATE_FLAGS;
237 #endif
238
239 HRESOURCE WINAPI CreateClusterResource(HGROUP hGroup,LPCWSTR lpszResourceName,LPCWSTR lpszResourceType,DWORD dwFlags);
240 HRESOURCE WINAPI OpenClusterResource(HCLUSTER hCluster,LPCWSTR lpszResourceName);
241 WINBOOL WINAPI CloseClusterResource(HRESOURCE hResource);
242 HCLUSTER WINAPI GetClusterFromResource(HRESOURCE hResource);
243 DWORD WINAPI DeleteClusterResource(HRESOURCE hResource);
244 CLUSTER_RESOURCE_STATE WINAPI GetClusterResourceState(HRESOURCE hResource,LPWSTR lpszNodeName,LPDWORD lpcchNodeName,LPWSTR lpszGroupName,LPDWORD lpcchGroupName);
245 DWORD WINAPI SetClusterResourceName(HRESOURCE hResource,LPCWSTR lpszResourceName);
246 DWORD WINAPI FailClusterResource(HRESOURCE hResource);
247 DWORD WINAPI OnlineClusterResource(HRESOURCE hResource);
248 DWORD WINAPI OfflineClusterResource(HRESOURCE hResource);
249 DWORD WINAPI ChangeClusterResourceGroup(HRESOURCE hResource,HGROUP hGroup);
250 DWORD WINAPI AddClusterResourceNode(HRESOURCE hResource,HNODE hNode);
251 DWORD WINAPI RemoveClusterResourceNode(HRESOURCE hResource,HNODE hNode);
252 DWORD WINAPI AddClusterResourceDependency(HRESOURCE hResource,HRESOURCE hDependsOn);
253 DWORD WINAPI RemoveClusterResourceDependency(HRESOURCE hResource,HRESOURCE hDependsOn);
254 WINBOOL WINAPI CanResourceBeDependent(HRESOURCE hResource,HRESOURCE hResourceDependent);
255 DWORD WINAPI ClusterResourceControl(HRESOURCE hResource,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD cbInBufferSize,LPVOID lpOutBuffer,DWORD cbOutBufferSize,LPDWORD lpBytesReturned);
256 DWORD WINAPI ClusterResourceTypeControl(HCLUSTER hCluster,LPCWSTR lpszResourceTypeName,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned);
257 DWORD WINAPI ClusterGroupControl(HGROUP hGroup,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned);
258 DWORD WINAPI ClusterNodeControl(HNODE hNode,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned);
259 WINBOOL WINAPI GetClusterResourceNetworkName(HRESOURCE hResource,LPWSTR lpBuffer,LPDWORD nSize);
260
261 #ifndef _CLUSTER_API_TYPES_
262 typedef enum CLUSTER_PROPERTY_TYPE {
263 CLUSPROP_TYPE_UNKNOWN = -1,CLUSPROP_TYPE_ENDMARK = 0,CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_TYPE_RESCLASS,CLUSPROP_TYPE_RESERVED1,CLUSPROP_TYPE_NAME,
264 CLUSPROP_TYPE_SIGNATURE,CLUSPROP_TYPE_SCSI_ADDRESS,CLUSPROP_TYPE_DISK_NUMBER,CLUSPROP_TYPE_PARTITION_INFO,CLUSPROP_TYPE_FTSET_INFO,
265 CLUSPROP_TYPE_DISK_SERIALNUMBER,CLUSPROP_TYPE_USER=32768
266 } CLUSTER_PROPERTY_TYPE;
267
268 typedef enum CLUSTER_PROPERTY_FORMAT {
269 CLUSPROP_FORMAT_UNKNOWN = 0,CLUSPROP_FORMAT_BINARY,CLUSPROP_FORMAT_DWORD,CLUSPROP_FORMAT_SZ,CLUSPROP_FORMAT_EXPAND_SZ,CLUSPROP_FORMAT_MULTI_SZ,
270 CLUSPROP_FORMAT_ULARGE_INTEGER,CLUSPROP_FORMAT_LONG,CLUSPROP_FORMAT_EXPANDED_SZ,CLUSPROP_FORMAT_SECURITY_DESCRIPTOR,CLUSPROP_FORMAT_LARGE_INTEGER,
271 CLUSPROP_FORMAT_WORD,CLUSPROP_FORMAT_USER=32768
272 } CLUSTER_PROPERTY_FORMAT;
273 #endif
274
275 #define CLUSPROP_SYNTAX_VALUE(type,format) ((DWORD) ((type << 16) | format))
276
277 #ifndef _CLUSTER_API_TYPES_
278 typedef enum CLUSTER_PROPERTY_SYNTAX {
279 CLUSPROP_SYNTAX_ENDMARK = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_ENDMARK,CLUSPROP_FORMAT_UNKNOWN),
280 CLUSPROP_SYNTAX_NAME = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_NAME,CLUSPROP_FORMAT_SZ),
281 CLUSPROP_SYNTAX_RESCLASS = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_RESCLASS,CLUSPROP_FORMAT_DWORD),
282 CLUSPROP_SYNTAX_LIST_VALUE_SZ = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_SZ),
283 CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_EXPAND_SZ),
284 CLUSPROP_SYNTAX_LIST_VALUE_DWORD = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_DWORD),
285 CLUSPROP_SYNTAX_LIST_VALUE_BINARY = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_BINARY),
286 CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_MULTI_SZ),
287 CLUSPROP_SYNTAX_LIST_VALUE_LONG = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_LONG),
288 CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_EXPANDED_SZ),
289 CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_SECURITY_DESCRIPTOR),
290 CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_LARGE_INTEGER),
291 CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_LIST_VALUE,CLUSPROP_FORMAT_ULARGE_INTEGER),
292 CLUSPROP_SYNTAX_DISK_SIGNATURE = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_SIGNATURE,CLUSPROP_FORMAT_DWORD),
293 CLUSPROP_SYNTAX_SCSI_ADDRESS = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_SCSI_ADDRESS,CLUSPROP_FORMAT_DWORD),
294 CLUSPROP_SYNTAX_DISK_NUMBER = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_DISK_NUMBER,CLUSPROP_FORMAT_DWORD),
295 CLUSPROP_SYNTAX_PARTITION_INFO = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_PARTITION_INFO,CLUSPROP_FORMAT_BINARY),
296 CLUSPROP_SYNTAX_FTSET_INFO = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_FTSET_INFO,CLUSPROP_FORMAT_BINARY),
297 CLUSPROP_SYNTAX_DISK_SERIALNUMBER = CLUSPROP_SYNTAX_VALUE(CLUSPROP_TYPE_DISK_SERIALNUMBER,CLUSPROP_FORMAT_SZ)
298 } CLUSTER_PROPERTY_SYNTAX;
299 #endif
300
301 #define CLUS_ACCESS_ANY 0
302 #define CLUS_ACCESS_READ 0x01
303 #define CLUS_ACCESS_WRITE 0x02
304
305 #define CLUS_NO_MODIFY 0
306 #define CLUS_MODIFY 0x01
307
308 #define CLUS_NOT_GLOBAL 0
309 #define CLUS_GLOBAL 0x01
310
311 #ifndef _CLUSTER_API_TYPES_
312 typedef enum CLUSTER_CONTROL_OBJECT {
313 CLUS_OBJECT_INVALID=0,CLUS_OBJECT_RESOURCE,CLUS_OBJECT_RESOURCE_TYPE,CLUS_OBJECT_GROUP,CLUS_OBJECT_NODE,CLUS_OBJECT_NETWORK,
314 CLUS_OBJECT_NETINTERFACE,CLUS_OBJECT_CLUSTER,CLUS_OBJECT_USER=128
315 } CLUSTER_CONTROL_OBJECT;
316 #endif
317
318 #define CLUSCTL_ACCESS_SHIFT 0
319 #define CLUSCTL_FUNCTION_SHIFT 2
320 #define CLCTL_INTERNAL_SHIFT 20
321 #define CLCTL_USER_SHIFT 21
322 #define CLCTL_MODIFY_SHIFT 22
323 #define CLCTL_GLOBAL_SHIFT 23
324 #define CLUSCTL_OBJECT_SHIFT 24
325
326 #define CLCTL_INTERNAL_MASK (1<<CLCTL_INTERNAL_SHIFT)
327 #define CLCTL_USER_MASK (1<<CLCTL_USER_SHIFT)
328 #define CLCTL_MODIFY_MASK (1<<CLCTL_MODIFY_SHIFT)
329 #define CLCTL_GLOBAL_MASK (1<<CLCTL_GLOBAL_SHIFT)
330 #define CLUSCTL_CONTROL_CODE_MASK 0x3FFFFF
331 #define CLUSCTL_OBJECT_MASK 0xFF
332 #define CLUSCTL_ACCESS_MODE_MASK 0x03
333
334 #define CLCTL_CLUSTER_BASE 0
335 #define CLCTL_USER_BASE (1<<CLCTL_USER_SHIFT)
336
337 #define CLCTL_EXTERNAL_CODE(Function,Access,Modify) (((Access) << CLUSCTL_ACCESS_SHIFT) | ((CLCTL_CLUSTER_BASE + Function) << CLUSCTL_FUNCTION_SHIFT) | ((Modify) << CLCTL_MODIFY_SHIFT))
338 #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))
339
340 #ifndef _CLUSTER_API_TYPES_
341 typedef enum CLCTL_CODES {
342 CLCTL_UNKNOWN = CLCTL_EXTERNAL_CODE(0,CLUS_ACCESS_ANY,CLUS_NO_MODIFY),
343 CLCTL_GET_CHARACTERISTICS = CLCTL_EXTERNAL_CODE(1,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
344 CLCTL_GET_FLAGS = CLCTL_EXTERNAL_CODE(2,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
345 CLCTL_GET_CLASS_INFO = CLCTL_EXTERNAL_CODE(3,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
346 CLCTL_GET_REQUIRED_DEPENDENCIES = CLCTL_EXTERNAL_CODE(4,CLUS_ACCESS_READ,
347 CLUS_NO_MODIFY),CLCTL_GET_ARB_TIMEOUT = CLCTL_EXTERNAL_CODE(5,CLUS_ACCESS_READ,
348 CLUS_NO_MODIFY),CLCTL_GET_NAME = CLCTL_EXTERNAL_CODE(10,CLUS_ACCESS_READ,
349 CLUS_NO_MODIFY),CLCTL_GET_RESOURCE_TYPE = CLCTL_EXTERNAL_CODE(11,
350 CLUS_ACCESS_READ,CLUS_NO_MODIFY),CLCTL_GET_NODE = CLCTL_EXTERNAL_CODE(12,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
351 CLCTL_GET_NETWORK = CLCTL_EXTERNAL_CODE(13,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
352 CLCTL_GET_ID = CLCTL_EXTERNAL_CODE(14,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
353 CLCTL_GET_FQDN = CLCTL_EXTERNAL_CODE(15,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
354 CLCTL_GET_CLUSTER_SERVICE_ACCOUNT_NAME = CLCTL_EXTERNAL_CODE(16,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
355 CLCTL_ENUM_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(20,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
356 CLCTL_GET_RO_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(21,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
357 CLCTL_GET_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(22,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
358 CLCTL_SET_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(23,CLUS_ACCESS_WRITE,CLUS_MODIFY),
359 CLCTL_VALIDATE_COMMON_PROPERTIES = CLCTL_EXTERNAL_CODE(24,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
360 CLCTL_GET_COMMON_PROPERTY_FMTS = CLCTL_EXTERNAL_CODE(25,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
361 CLCTL_GET_COMMON_RESOURCE_PROPERTY_FMTS = CLCTL_EXTERNAL_CODE(26,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
362 CLCTL_ENUM_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(30,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
363 CLCTL_GET_RO_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(31,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
364 CLCTL_GET_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(32,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
365 CLCTL_SET_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(33,CLUS_ACCESS_WRITE,CLUS_MODIFY),
366 CLCTL_VALIDATE_PRIVATE_PROPERTIES = CLCTL_EXTERNAL_CODE(34,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
367 CLCTL_GET_PRIVATE_PROPERTY_FMTS = CLCTL_EXTERNAL_CODE(35,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
368 CLCTL_GET_PRIVATE_RESOURCE_PROPERTY_FMTS= CLCTL_EXTERNAL_CODE(36,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
369 CLCTL_ADD_REGISTRY_CHECKPOINT = CLCTL_EXTERNAL_CODE(40,CLUS_ACCESS_WRITE,CLUS_MODIFY),
370 CLCTL_DELETE_REGISTRY_CHECKPOINT = CLCTL_EXTERNAL_CODE(41,CLUS_ACCESS_WRITE,CLUS_MODIFY),
371 CLCTL_GET_REGISTRY_CHECKPOINTS = CLCTL_EXTERNAL_CODE(42,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
372 CLCTL_ADD_CRYPTO_CHECKPOINT = CLCTL_EXTERNAL_CODE(43,CLUS_ACCESS_WRITE,CLUS_MODIFY),
373 CLCTL_DELETE_CRYPTO_CHECKPOINT = CLCTL_EXTERNAL_CODE(44,CLUS_ACCESS_WRITE,CLUS_MODIFY),
374 CLCTL_GET_CRYPTO_CHECKPOINTS = CLCTL_EXTERNAL_CODE(45,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
375 CLCTL_RESOURCE_UPGRADE_DLL = CLCTL_EXTERNAL_CODE(46,CLUS_ACCESS_WRITE,CLUS_MODIFY),
376 CLCTL_ADD_REGISTRY_CHECKPOINT_64BIT = CLCTL_EXTERNAL_CODE(47,CLUS_ACCESS_WRITE,CLUS_MODIFY),
377 CLCTL_ADD_REGISTRY_CHECKPOINT_32BIT = CLCTL_EXTERNAL_CODE(48,CLUS_ACCESS_WRITE,CLUS_MODIFY),
378 CLCTL_GET_LOADBAL_PROCESS_LIST = CLCTL_EXTERNAL_CODE(50,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
379 CLCTL_GET_NETWORK_NAME = CLCTL_EXTERNAL_CODE(90,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
380 CLCTL_NETNAME_GET_VIRTUAL_SERVER_TOKEN = CLCTL_EXTERNAL_CODE(91,CLUS_ACCESS_READ,
381 CLUS_NO_MODIFY),CLCTL_NETNAME_REGISTER_DNS_RECORDS = CLCTL_EXTERNAL_CODE(92,CLUS_ACCESS_WRITE,CLUS_NO_MODIFY),
382 CLCTL_STORAGE_GET_DISK_INFO = CLCTL_EXTERNAL_CODE(100,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
383 CLCTL_STORAGE_GET_AVAILABLE_DISKS = CLCTL_EXTERNAL_CODE(101,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
384 CLCTL_STORAGE_IS_PATH_VALID = CLCTL_EXTERNAL_CODE(102,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
385 CLCTL_STORAGE_GET_ALL_AVAILABLE_DISKS = (CLCTL_EXTERNAL_CODE(103,CLUS_ACCESS_READ,CLUS_NO_MODIFY) | CLCTL_GLOBAL_MASK),
386 CLCTL_QUERY_DELETE = CLCTL_EXTERNAL_CODE(110,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
387 CLCTL_QUERY_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE(120,CLUS_ACCESS_READ,CLUS_NO_MODIFY),
388 CLCTL_SET_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE(121,CLUS_ACCESS_WRITE,
389 CLUS_MODIFY),CLCTL_DELETE = CLCTL_INTERNAL_CODE(1,CLUS_ACCESS_WRITE,CLUS_MODIFY),
390 CLCTL_INSTALL_NODE = CLCTL_INTERNAL_CODE(2,CLUS_ACCESS_WRITE,CLUS_MODIFY),
391 CLCTL_EVICT_NODE = CLCTL_INTERNAL_CODE(3,CLUS_ACCESS_WRITE,CLUS_MODIFY),
392 CLCTL_ADD_DEPENDENCY = CLCTL_INTERNAL_CODE(4,CLUS_ACCESS_WRITE,CLUS_MODIFY),
393 CLCTL_REMOVE_DEPENDENCY = CLCTL_INTERNAL_CODE(5,CLUS_ACCESS_WRITE,CLUS_MODIFY),
394 CLCTL_ADD_OWNER = CLCTL_INTERNAL_CODE(6,CLUS_ACCESS_WRITE,CLUS_MODIFY),
395 CLCTL_REMOVE_OWNER = CLCTL_INTERNAL_CODE(7,CLUS_ACCESS_WRITE,
396 CLUS_MODIFY),CLCTL_SET_NAME = CLCTL_INTERNAL_CODE(9,CLUS_ACCESS_WRITE,CLUS_MODIFY),
397 CLCTL_CLUSTER_NAME_CHANGED = CLCTL_INTERNAL_CODE(10,CLUS_ACCESS_WRITE,CLUS_MODIFY),
398 CLCTL_CLUSTER_VERSION_CHANGED = CLCTL_INTERNAL_CODE(11,CLUS_ACCESS_WRITE,CLUS_MODIFY),
399 CLCTL_FIXUP_ON_UPGRADE = CLCTL_INTERNAL_CODE(12,CLUS_ACCESS_WRITE,CLUS_MODIFY),
400 CLCTL_STARTING_PHASE1 = CLCTL_INTERNAL_CODE(13,CLUS_ACCESS_WRITE,CLUS_MODIFY),
401 CLCTL_STARTING_PHASE2 = CLCTL_INTERNAL_CODE(14,CLUS_ACCESS_WRITE,CLUS_MODIFY),
402 CLCTL_HOLD_IO = CLCTL_INTERNAL_CODE(15,CLUS_ACCESS_WRITE,CLUS_MODIFY),
403 CLCTL_RESUME_IO = CLCTL_INTERNAL_CODE(16,CLUS_ACCESS_WRITE,CLUS_MODIFY),
404 CLCTL_FORCE_QUORUM = CLCTL_INTERNAL_CODE(17,CLUS_ACCESS_WRITE,CLUS_MODIFY),
405 CLCTL_INITIALIZE = CLCTL_INTERNAL_CODE(18,CLUS_ACCESS_WRITE,CLUS_MODIFY),
406 CLCTL_STATE_CHANGE_REASON = CLCTL_INTERNAL_CODE(19,CLUS_ACCESS_WRITE,CLUS_MODIFY)
407 } CLCTL_CODES;
408 #endif
409
410 #define CLUSCTL_RESOURCE_CODE(Function) (((CLUS_OBJECT_RESOURCE << CLUSCTL_OBJECT_SHIFT) | Function))
411 #define CLUSCTL_RESOURCE_TYPE_CODE(Function) (((CLUS_OBJECT_RESOURCE_TYPE << CLUSCTL_OBJECT_SHIFT) | Function))
412 #define CLUSCTL_GROUP_CODE(Function) (((CLUS_OBJECT_GROUP << CLUSCTL_OBJECT_SHIFT) | Function))
413 #define CLUSCTL_NODE_CODE(Function) (((CLUS_OBJECT_NODE << CLUSCTL_OBJECT_SHIFT) | Function))
414 #define CLUSCTL_NETWORK_CODE(Function) (((CLUS_OBJECT_NETWORK << CLUSCTL_OBJECT_SHIFT) | Function))
415 #define CLUSCTL_NETINTERFACE_CODE(Function) (((CLUS_OBJECT_NETINTERFACE << CLUSCTL_OBJECT_SHIFT) | Function))
416 #define CLUSCTL_CLUSTER_CODE(Function) (((CLUS_OBJECT_CLUSTER << CLUSCTL_OBJECT_SHIFT) | Function))
417 #define CLUSCTL_USER_CODE(Function,Object) (((Object) << CLUSCTL_OBJECT_SHIFT) | ((CLCTL_USER_BASE + Function) << CLUSCTL_FUNCTION_SHIFT))
418 #define CLUSCTL_GET_CONTROL_FUNCTION(ControlCode) ((ControlCode >> CLUSCTL_ACCESS_SHIFT) & CLUSCTL_CONTROL_CODE_MASK)
419 #define CLUSCTL_GET_ACCESS_MODE(ControlCode) ((ControlCode >> CLUSCTL_ACCESS_SHIFT) & CLUSCTL_ACCESS_MODE_MASK)
420 #define CLUSCTL_GET_CONTROL_OBJECT(ControlCode) ((ControlCode >> CLUSCTL_OBJECT_SHIFT) & CLUSCTL_OBJECT_MASK)
421
422 #ifndef _CLUSTER_API_TYPES_
423 typedef enum CLUSCTL_RESOURCE_CODES {
424 CLUSCTL_RESOURCE_UNKNOWN = CLUSCTL_RESOURCE_CODE(CLCTL_UNKNOWN),
425 CLUSCTL_RESOURCE_GET_CHARACTERISTICS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_CHARACTERISTICS),
426 CLUSCTL_RESOURCE_GET_FLAGS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_FLAGS),
427 CLUSCTL_RESOURCE_GET_CLASS_INFO = CLUSCTL_RESOURCE_CODE(CLCTL_GET_CLASS_INFO),
428 CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_REQUIRED_DEPENDENCIES),
429 CLUSCTL_RESOURCE_GET_NAME = CLUSCTL_RESOURCE_CODE(CLCTL_GET_NAME),
430 CLUSCTL_RESOURCE_GET_ID = CLUSCTL_RESOURCE_CODE(CLCTL_GET_ID),
431 CLUSCTL_RESOURCE_GET_RESOURCE_TYPE = CLUSCTL_RESOURCE_CODE(CLCTL_GET_RESOURCE_TYPE),
432 CLUSCTL_RESOURCE_ENUM_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_ENUM_COMMON_PROPERTIES),
433 CLUSCTL_RESOURCE_GET_RO_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_RO_COMMON_PROPERTIES),
434 CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_COMMON_PROPERTIES),
435 CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_SET_COMMON_PROPERTIES),
436 CLUSCTL_RESOURCE_VALIDATE_COMMON_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES),
437 CLUSCTL_RESOURCE_GET_COMMON_PROPERTY_FMTS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS),
438 CLUSCTL_RESOURCE_ENUM_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES),
439 CLUSCTL_RESOURCE_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES),
440 CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_GET_PRIVATE_PROPERTIES),
441 CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_SET_PRIVATE_PROPERTIES),
442 CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES),
443 CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS),
444 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_REGISTRY_CHECKPOINT),
445 CLUSCTL_RESOURCE_DELETE_REGISTRY_CHECKPOINT = CLUSCTL_RESOURCE_CODE(CLCTL_DELETE_REGISTRY_CHECKPOINT),
446 CLUSCTL_RESOURCE_GET_REGISTRY_CHECKPOINTS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_REGISTRY_CHECKPOINTS),
447 CLUSCTL_RESOURCE_ADD_CRYPTO_CHECKPOINT = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_CRYPTO_CHECKPOINT),
448 CLUSCTL_RESOURCE_DELETE_CRYPTO_CHECKPOINT = CLUSCTL_RESOURCE_CODE(CLCTL_DELETE_CRYPTO_CHECKPOINT),
449 CLUSCTL_RESOURCE_GET_CRYPTO_CHECKPOINTS = CLUSCTL_RESOURCE_CODE(CLCTL_GET_CRYPTO_CHECKPOINTS),
450 CLUSCTL_RESOURCE_GET_LOADBAL_PROCESS_LIST = CLUSCTL_RESOURCE_CODE(CLCTL_GET_LOADBAL_PROCESS_LIST),
451 CLUSCTL_RESOURCE_GET_NETWORK_NAME = CLUSCTL_RESOURCE_CODE(CLCTL_GET_NETWORK_NAME),
452 CLUSCTL_RESOURCE_NETNAME_GET_VIRTUAL_SERVER_TOKEN = CLUSCTL_RESOURCE_CODE(CLCTL_NETNAME_GET_VIRTUAL_SERVER_TOKEN),
453 CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS = CLUSCTL_RESOURCE_CODE(CLCTL_NETNAME_REGISTER_DNS_RECORDS),
454 CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_GET_DISK_INFO),
455 CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = CLUSCTL_RESOURCE_CODE(CLCTL_STORAGE_IS_PATH_VALID),
456 CLUSCTL_RESOURCE_QUERY_DELETE = CLUSCTL_RESOURCE_CODE(CLCTL_QUERY_DELETE),
457 CLUSCTL_RESOURCE_UPGRADE_DLL = CLUSCTL_RESOURCE_CODE(CLCTL_RESOURCE_UPGRADE_DLL),
458 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_64BIT = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_REGISTRY_CHECKPOINT_64BIT),
459 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_32BIT = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_REGISTRY_CHECKPOINT_32BIT),
460 CLUSCTL_RESOURCE_QUERY_MAINTENANCE_MODE = CLUSCTL_RESOURCE_CODE(CLCTL_QUERY_MAINTENANCE_MODE),
461 CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE = CLUSCTL_RESOURCE_CODE(CLCTL_SET_MAINTENANCE_MODE),
462 CLUSCTL_RESOURCE_DELETE = CLUSCTL_RESOURCE_CODE(CLCTL_DELETE),
463 CLUSCTL_RESOURCE_INSTALL_NODE = CLUSCTL_RESOURCE_CODE(CLCTL_INSTALL_NODE),
464 CLUSCTL_RESOURCE_EVICT_NODE = CLUSCTL_RESOURCE_CODE(CLCTL_EVICT_NODE),
465 CLUSCTL_RESOURCE_ADD_DEPENDENCY = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_DEPENDENCY),
466 CLUSCTL_RESOURCE_REMOVE_DEPENDENCY = CLUSCTL_RESOURCE_CODE(CLCTL_REMOVE_DEPENDENCY),
467 CLUSCTL_RESOURCE_ADD_OWNER = CLUSCTL_RESOURCE_CODE(CLCTL_ADD_OWNER),
468 CLUSCTL_RESOURCE_REMOVE_OWNER = CLUSCTL_RESOURCE_CODE(CLCTL_REMOVE_OWNER),
469 CLUSCTL_RESOURCE_SET_NAME = CLUSCTL_RESOURCE_CODE(CLCTL_SET_NAME),
470 CLUSCTL_RESOURCE_CLUSTER_NAME_CHANGED = CLUSCTL_RESOURCE_CODE(CLCTL_CLUSTER_NAME_CHANGED),
471 CLUSCTL_RESOURCE_CLUSTER_VERSION_CHANGED = CLUSCTL_RESOURCE_CODE(CLCTL_CLUSTER_VERSION_CHANGED),
472 CLUSCTL_RESOURCE_FORCE_QUORUM = CLUSCTL_RESOURCE_CODE(CLCTL_FORCE_QUORUM),
473 CLUSCTL_RESOURCE_INITIALIZE = CLUSCTL_RESOURCE_CODE(CLCTL_INITIALIZE),
474 CLUSCTL_RESOURCE_STATE_CHANGE_REASON = CLUSCTL_RESOURCE_CODE(CLCTL_STATE_CHANGE_REASON)
475 } CLUSCTL_RESOURCE_CODES;
476
477 typedef enum CLUSCTL_RESOURCE_TYPE_CODES {
478 CLUSCTL_RESOURCE_TYPE_UNKNOWN = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_UNKNOWN),
479 CLUSCTL_RESOURCE_TYPE_GET_CHARACTERISTICS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_CHARACTERISTICS),
480 CLUSCTL_RESOURCE_TYPE_GET_FLAGS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_FLAGS),
481 CLUSCTL_RESOURCE_TYPE_GET_CLASS_INFO = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_CLASS_INFO),
482 CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_REQUIRED_DEPENDENCIES),
483 CLUSCTL_RESOURCE_TYPE_GET_ARB_TIMEOUT = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_ARB_TIMEOUT),
484 CLUSCTL_RESOURCE_TYPE_ENUM_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_ENUM_COMMON_PROPERTIES),
485 CLUSCTL_RESOURCE_TYPE_GET_RO_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_RO_COMMON_PROPERTIES),
486 CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_COMMON_PROPERTIES),
487 CLUSCTL_RESOURCE_TYPE_VALIDATE_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES),
488 CLUSCTL_RESOURCE_TYPE_SET_COMMON_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_SET_COMMON_PROPERTIES),
489 CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTY_FMTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS),
490 CLUSCTL_RESOURCE_TYPE_GET_COMMON_RESOURCE_PROPERTY_FMTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_COMMON_RESOURCE_PROPERTY_FMTS),
491 CLUSCTL_RESOURCE_TYPE_ENUM_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES),
492 CLUSCTL_RESOURCE_TYPE_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES),
493 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_PRIVATE_PROPERTIES),
494 CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_SET_PRIVATE_PROPERTIES),
495 CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES),
496 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS),
497 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_RESOURCE_PROPERTY_FMTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_PRIVATE_RESOURCE_PROPERTY_FMTS),
498 CLUSCTL_RESOURCE_TYPE_GET_REGISTRY_CHECKPOINTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_REGISTRY_CHECKPOINTS),
499 CLUSCTL_RESOURCE_TYPE_GET_CRYPTO_CHECKPOINTS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_GET_CRYPTO_CHECKPOINTS),
500 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_STORAGE_GET_AVAILABLE_DISKS),
501 CLUSCTL_RESOURCE_TYPE_QUERY_DELETE = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_QUERY_DELETE),
502 CLUSCTL_RESOURCE_TYPE_INSTALL_NODE = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_INSTALL_NODE),
503 CLUSCTL_RESOURCE_TYPE_EVICT_NODE = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_EVICT_NODE),
504 CLUSCTL_RESOURCE_TYPE_CLUSTER_VERSION_CHANGED = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_CLUSTER_VERSION_CHANGED),
505 CLUSCTL_RESOURCE_TYPE_FIXUP_ON_UPGRADE = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_FIXUP_ON_UPGRADE),
506 CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1 = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_STARTING_PHASE1),
507 CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2 = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_STARTING_PHASE2),
508 CLUSCTL_RESOURCE_TYPE_HOLD_IO = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_HOLD_IO),
509 CLUSCTL_RESOURCE_TYPE_RESUME_IO = CLUSCTL_RESOURCE_TYPE_CODE(CLCTL_RESUME_IO)
510
511 } CLUSCTL_RESOURCE_TYPE_CODES;
512
513 typedef enum CLUSCTL_GROUP_CODES {
514 CLUSCTL_GROUP_UNKNOWN = CLUSCTL_GROUP_CODE(CLCTL_UNKNOWN),
515 CLUSCTL_GROUP_GET_CHARACTERISTICS = CLUSCTL_GROUP_CODE(CLCTL_GET_CHARACTERISTICS),
516 CLUSCTL_GROUP_GET_FLAGS = CLUSCTL_GROUP_CODE(CLCTL_GET_FLAGS),
517 CLUSCTL_GROUP_GET_NAME = CLUSCTL_GROUP_CODE(CLCTL_GET_NAME),
518 CLUSCTL_GROUP_GET_ID = CLUSCTL_GROUP_CODE(CLCTL_GET_ID),
519 CLUSCTL_GROUP_ENUM_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_ENUM_COMMON_PROPERTIES),
520 CLUSCTL_GROUP_GET_RO_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_GET_RO_COMMON_PROPERTIES),
521 CLUSCTL_GROUP_GET_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_GET_COMMON_PROPERTIES),
522 CLUSCTL_GROUP_SET_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_SET_COMMON_PROPERTIES),
523 CLUSCTL_GROUP_VALIDATE_COMMON_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES),
524 CLUSCTL_GROUP_ENUM_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES),
525 CLUSCTL_GROUP_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES),
526 CLUSCTL_GROUP_GET_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_GET_PRIVATE_PROPERTIES),
527 CLUSCTL_GROUP_SET_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_SET_PRIVATE_PROPERTIES),
528 CLUSCTL_GROUP_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_GROUP_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES),
529 CLUSCTL_GROUP_QUERY_DELETE = CLUSCTL_GROUP_CODE(CLCTL_QUERY_DELETE),
530 CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS = CLUSCTL_GROUP_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS),
531 CLUSCTL_GROUP_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_GROUP_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS)
532 } CLUSCTL_GROUP_CODES;
533
534 typedef enum CLUSCTL_NODE_CODES {
535 CLUSCTL_NODE_UNKNOWN = CLUSCTL_NODE_CODE(CLCTL_UNKNOWN),
536 CLUSCTL_NODE_GET_CHARACTERISTICS = CLUSCTL_NODE_CODE(CLCTL_GET_CHARACTERISTICS),
537 CLUSCTL_NODE_GET_FLAGS = CLUSCTL_NODE_CODE(CLCTL_GET_FLAGS),
538 CLUSCTL_NODE_GET_NAME = CLUSCTL_NODE_CODE(CLCTL_GET_NAME),
539 CLUSCTL_NODE_GET_ID = CLUSCTL_NODE_CODE(CLCTL_GET_ID),
540 CLUSCTL_NODE_ENUM_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_ENUM_COMMON_PROPERTIES),
541 CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_GET_RO_COMMON_PROPERTIES),
542 CLUSCTL_NODE_GET_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_GET_COMMON_PROPERTIES),
543 CLUSCTL_NODE_SET_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_SET_COMMON_PROPERTIES),
544 CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES),
545 CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES),
546 CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES),
547 CLUSCTL_NODE_GET_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_GET_PRIVATE_PROPERTIES),
548 CLUSCTL_NODE_SET_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_SET_PRIVATE_PROPERTIES),
549 CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_NODE_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES),
550 CLUSCTL_NODE_GET_COMMON_PROPERTY_FMTS = CLUSCTL_NODE_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS),
551 CLUSCTL_NODE_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_NODE_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS),
552 CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME = CLUSCTL_NODE_CODE(CLCTL_GET_CLUSTER_SERVICE_ACCOUNT_NAME)
553 } CLUSCTL_NODE_CODES;
554
555 typedef enum CLUSCTL_NETWORK_CODES {
556 CLUSCTL_NETWORK_UNKNOWN = CLUSCTL_NETWORK_CODE(CLCTL_UNKNOWN),
557 CLUSCTL_NETWORK_GET_CHARACTERISTICS = CLUSCTL_NETWORK_CODE(CLCTL_GET_CHARACTERISTICS),
558 CLUSCTL_NETWORK_GET_FLAGS = CLUSCTL_NETWORK_CODE(CLCTL_GET_FLAGS),
559 CLUSCTL_NETWORK_GET_NAME = CLUSCTL_NETWORK_CODE(CLCTL_GET_NAME),
560 CLUSCTL_NETWORK_GET_ID = CLUSCTL_NETWORK_CODE(CLCTL_GET_ID),
561 CLUSCTL_NETWORK_ENUM_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_ENUM_COMMON_PROPERTIES),
562 CLUSCTL_NETWORK_GET_RO_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_GET_RO_COMMON_PROPERTIES),
563 CLUSCTL_NETWORK_GET_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_GET_COMMON_PROPERTIES),
564 CLUSCTL_NETWORK_SET_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_SET_COMMON_PROPERTIES),
565 CLUSCTL_NETWORK_VALIDATE_COMMON_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES),
566 CLUSCTL_NETWORK_ENUM_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES),
567 CLUSCTL_NETWORK_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES),
568 CLUSCTL_NETWORK_GET_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_GET_PRIVATE_PROPERTIES),
569 CLUSCTL_NETWORK_SET_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_SET_PRIVATE_PROPERTIES),
570 CLUSCTL_NETWORK_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_NETWORK_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES),
571 CLUSCTL_NETWORK_GET_COMMON_PROPERTY_FMTS = CLUSCTL_NETWORK_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS),
572 CLUSCTL_NETWORK_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_NETWORK_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS)
573 } CLUSCTL_NETWORK_CODES;
574
575 typedef enum CLUSCTL_NETINTERFACE_CODES {
576 CLUSCTL_NETINTERFACE_UNKNOWN = CLUSCTL_NETINTERFACE_CODE(CLCTL_UNKNOWN),
577 CLUSCTL_NETINTERFACE_GET_CHARACTERISTICS = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_CHARACTERISTICS),
578 CLUSCTL_NETINTERFACE_GET_FLAGS = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_FLAGS),
579 CLUSCTL_NETINTERFACE_GET_NAME = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_NAME),
580 CLUSCTL_NETINTERFACE_GET_ID = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_ID),
581 CLUSCTL_NETINTERFACE_GET_NODE = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_NODE),
582 CLUSCTL_NETINTERFACE_GET_NETWORK = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_NETWORK),
583 CLUSCTL_NETINTERFACE_ENUM_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_ENUM_COMMON_PROPERTIES),
584 CLUSCTL_NETINTERFACE_GET_RO_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_RO_COMMON_PROPERTIES),
585 CLUSCTL_NETINTERFACE_GET_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_COMMON_PROPERTIES),
586 CLUSCTL_NETINTERFACE_SET_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_SET_COMMON_PROPERTIES),
587 CLUSCTL_NETINTERFACE_VALIDATE_COMMON_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES),
588 CLUSCTL_NETINTERFACE_ENUM_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES),
589 CLUSCTL_NETINTERFACE_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES),
590 CLUSCTL_NETINTERFACE_GET_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_PRIVATE_PROPERTIES),
591 CLUSCTL_NETINTERFACE_SET_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_SET_PRIVATE_PROPERTIES),
592 CLUSCTL_NETINTERFACE_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_NETINTERFACE_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES),
593 CLUSCTL_NETINTERFACE_GET_COMMON_PROPERTY_FMTS = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS),
594 CLUSCTL_NETINTERFACE_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_NETINTERFACE_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS)
595 } CLUSCTL_NETINTERFACE_CODES;
596
597 typedef enum CLUSCTL_CLUSTER_CODES {
598 CLUSCTL_CLUSTER_UNKNOWN = CLUSCTL_CLUSTER_CODE(CLCTL_UNKNOWN),
599 CLUSCTL_CLUSTER_GET_FQDN = CLUSCTL_CLUSTER_CODE(CLCTL_GET_FQDN),
600 CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_ENUM_COMMON_PROPERTIES),
601 CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_GET_RO_COMMON_PROPERTIES),
602 CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_GET_COMMON_PROPERTIES),
603 CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_SET_COMMON_PROPERTIES),
604 CLUSCTL_CLUSTER_VALIDATE_COMMON_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_VALIDATE_COMMON_PROPERTIES),
605 CLUSCTL_CLUSTER_ENUM_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_ENUM_PRIVATE_PROPERTIES),
606 CLUSCTL_CLUSTER_GET_RO_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_GET_RO_PRIVATE_PROPERTIES),
607 CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_GET_PRIVATE_PROPERTIES),
608 CLUSCTL_CLUSTER_SET_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_SET_PRIVATE_PROPERTIES),
609 CLUSCTL_CLUSTER_VALIDATE_PRIVATE_PROPERTIES = CLUSCTL_CLUSTER_CODE(CLCTL_VALIDATE_PRIVATE_PROPERTIES),
610 CLUSCTL_CLUSTER_GET_COMMON_PROPERTY_FMTS = CLUSCTL_CLUSTER_CODE(CLCTL_GET_COMMON_PROPERTY_FMTS),
611 CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTY_FMTS = CLUSCTL_CLUSTER_CODE(CLCTL_GET_PRIVATE_PROPERTY_FMTS)
612 } CLUSCTL_CLUSTER_CODES;
613
614 typedef enum CLUSTER_RESOURCE_CLASS {
615 CLUS_RESCLASS_UNKNOWN = 0,CLUS_RESCLASS_STORAGE,CLUS_RESCLASS_USER = 32768
616 } CLUSTER_RESOURCE_CLASS;
617
618 typedef enum CLUS_RESSUBCLASS {
619 CLUS_RESSUBCLASS_SHARED = 0x80000000
620 } CLUS_RESSUBCLASS;
621
622 typedef enum CLUS_CHARACTERISTICS {
623 CLUS_CHAR_UNKNOWN = 0x00000000,CLUS_CHAR_QUORUM = 0x00000001,CLUS_CHAR_DELETE_REQUIRES_ALL_NODES = 0x00000002,CLUS_CHAR_LOCAL_QUORUM = 0x00000004,
624 CLUS_CHAR_LOCAL_QUORUM_DEBUG = 0x00000008,CLUS_CHAR_REQUIRES_STATE_CHANGE_REASON = 0x00000010
625 } CLUS_CHARACTERISTICS;
626
627 typedef enum CLUS_FLAGS {
628 CLUS_FLAG_CORE = 0x00000001
629 } CLUS_FLAGS;
630
631 typedef union CLUSPROP_SYNTAX {
632 DWORD dw;
633 __MINGW_EXTENSION struct {
634 WORD wFormat;
635 WORD wType;
636 };
637 } CLUSPROP_SYNTAX,*PCLUSPROP_SYNTAX;
638
639 typedef struct CLUSPROP_VALUE {
640 CLUSPROP_SYNTAX Syntax;
641 DWORD cbLength;
642 } CLUSPROP_VALUE,*PCLUSPROP_VALUE;
643
644 typedef struct CLUSPROP_BINARY
645 #ifdef __cplusplus
646 : public CLUSPROP_VALUE
647 #endif
648 {
649 #ifndef __cplusplus
650 CLUSPROP_VALUE;
651 #endif
652 BYTE rgb[1];
653 } CLUSPROP_BINARY,*PCLUSPROP_BINARY;
654
655 typedef struct CLUSPROP_WORD
656 #ifdef __cplusplus
657 : public CLUSPROP_VALUE
658 #endif
659 {
660 #ifndef __cplusplus
661 CLUSPROP_VALUE;
662 #endif
663 WORD w;
664 } CLUSPROP_WORD,*PCLUSPROP_WORD;
665
666 typedef struct CLUSPROP_DWORD
667 #ifdef __cplusplus
668 : public CLUSPROP_VALUE
669 #endif
670 {
671 #ifndef __cplusplus
672 CLUSPROP_VALUE;
673 #endif
674 DWORD dw;
675 } CLUSPROP_DWORD,*PCLUSPROP_DWORD;
676
677 typedef struct CLUSPROP_LONG
678 #ifdef __cplusplus
679 : public CLUSPROP_VALUE
680 #endif
681 {
682 #ifndef __cplusplus
683 CLUSPROP_VALUE;
684 #endif
685 LONG l;
686 } CLUSPROP_LONG,*PCLUSPROP_LONG;
687
688 typedef struct CLUSPROP_SZ
689 #ifdef __cplusplus
690 : public CLUSPROP_VALUE
691 #endif
692 {
693 #ifndef __cplusplus
694 CLUSPROP_VALUE;
695 #endif
696 WCHAR sz[1];
697 } CLUSPROP_SZ,*PCLUSPROP_SZ;
698
699 typedef CLUSPROP_SZ CLUSPROP_MULTI_SZ,*PCLUSPROP_MULTI_SZ;
700 typedef CLUSPROP_SZ CLUSPROP_PROPERTY_NAME,*PCLUSPROP_PROPERTY_NAME;
701
702 typedef struct CLUSPROP_ULARGE_INTEGER
703 #ifdef __cplusplus
704 : public CLUSPROP_VALUE
705 #endif
706 {
707 #ifndef __cplusplus
708 CLUSPROP_VALUE;
709 #endif
710 ULARGE_INTEGER li;
711 } CLUSPROP_ULARGE_INTEGER,*PCLUSPROP_ULARGE_INTEGER;
712
713 typedef struct CLUSPROP_LARGE_INTEGER
714 #ifdef __cplusplus
715 : public CLUSPROP_VALUE
716 #endif
717 {
718 #ifndef __cplusplus
719 CLUSPROP_VALUE;
720 #endif
721 LARGE_INTEGER li;
722 } CLUSPROP_LARGE_INTEGER,*PCLUSPROP_LARGE_INTEGER;
723
724 typedef struct CLUSPROP_SECURITY_DESCRIPTOR
725 #ifdef __cplusplus
726 : public CLUSPROP_VALUE
727 #endif
728 {
729 #ifndef __cplusplus
730 CLUSPROP_VALUE;
731 #endif
732 __MINGW_EXTENSION union {
733 SECURITY_DESCRIPTOR_RELATIVE sd;
734 BYTE rgbSecurityDescriptor[1];
735 };
736 } CLUSPROP_SECURITY_DESCRIPTOR,*PCLUSPROP_SECURITY_DESCRIPTOR;
737
738 typedef struct CLUS_RESOURCE_CLASS_INFO {
739 __MINGW_EXTENSION union {
740 __MINGW_EXTENSION struct {
741 __MINGW_EXTENSION union {
742 DWORD dw;
743 CLUSTER_RESOURCE_CLASS rc;
744 };
745 DWORD SubClass;
746 };
747 ULARGE_INTEGER li;
748 };
749 } CLUS_RESOURCE_CLASS_INFO,*PCLUS_RESOURCE_CLASS_INFO;
750
751 typedef struct CLUSPROP_RESOURCE_CLASS
752 #ifdef __cplusplus
753 : public CLUSPROP_VALUE
754 #endif
755 {
756 #ifndef __cplusplus
757 CLUSPROP_VALUE;
758 #endif
759 CLUSTER_RESOURCE_CLASS rc;
760 } CLUSPROP_RESOURCE_CLASS,*PCLUSPROP_RESOURCE_CLASS;
761
762 typedef struct CLUSPROP_RESOURCE_CLASS_INFO
763 #ifdef __cplusplus
764 : public CLUSPROP_VALUE,public CLUS_RESOURCE_CLASS_INFO
765 #endif
766 {
767 #ifndef __cplusplus
768 CLUSPROP_VALUE;
769 CLUS_RESOURCE_CLASS_INFO;
770 #endif
771 } CLUSPROP_RESOURCE_CLASS_INFO,*PCLUSPROP_RESOURCE_CLASS_INFO;
772
773 typedef union CLUSPROP_REQUIRED_DEPENDENCY {
774 CLUSPROP_VALUE Value;
775 CLUSPROP_RESOURCE_CLASS ResClass;
776 CLUSPROP_SZ ResTypeName;
777 } CLUSPROP_REQUIRED_DEPENDENCY,*PCLUSPROP_REQUIRED_DEPENDENCY;
778
779 typedef CLUSPROP_DWORD CLUSPROP_DISK_NUMBER,*PCLUSPROP_DISK_NUMBER;
780 #endif
781
782 #ifndef _CLUSTER_API_TYPES_
783 typedef enum CLUSPROP_PIFLAGS {
784 CLUSPROP_PIFLAG_STICKY = 0x00000001,CLUSPROP_PIFLAG_REMOVABLE = 0x00000002,CLUSPROP_PIFLAG_USABLE = 0x00000004,
785 CLUSPROP_PIFLAG_DEFAULT_QUORUM = 0x00000008
786 } CLUSPROP_PIFLAGS;
787
788 typedef struct CLUS_FORCE_QUORUM_INFO {
789 DWORD dwSize;
790 DWORD dwNodeBitMask;
791 DWORD dwMaxNumberofNodes;
792 WCHAR multiszNodeList[1];
793 } CLUS_FORCE_QUORUM_INFO,*PCLUS_FORCE_QUORUM_INFO;
794
795 typedef struct CLUS_PARTITION_INFO {
796 DWORD dwFlags;
797 WCHAR szDeviceName[MAX_PATH];
798 WCHAR szVolumeLabel[MAX_PATH];
799 DWORD dwSerialNumber;
800 DWORD rgdwMaximumComponentLength;
801 DWORD dwFileSystemFlags;
802 WCHAR szFileSystem[32];
803 } CLUS_PARTITION_INFO,*PCLUS_PARTITION_INFO;
804
805 typedef struct CLUSPROP_PARTITION_INFO
806 #ifdef __cplusplus
807 : public CLUSPROP_VALUE,public CLUS_PARTITION_INFO
808 #endif
809 {
810 #ifndef __cplusplus
811 CLUSPROP_VALUE;
812 CLUS_PARTITION_INFO;
813 #endif
814 } CLUSPROP_PARTITION_INFO,*PCLUSPROP_PARTITION_INFO;
815
816 typedef struct CLUS_FTSET_INFO {
817 DWORD dwRootSignature;
818 DWORD dwFtType;
819 } CLUS_FTSET_INFO,*PCLUS_FTSET_INFO;
820
821 typedef struct CLUSPROP_FTSET_INFO
822 #ifdef __cplusplus
823 : public CLUSPROP_VALUE,public CLUS_FTSET_INFO
824 #endif
825 {
826 #ifndef __cplusplus
827 CLUSPROP_VALUE;
828 CLUS_FTSET_INFO;
829 #endif
830 } CLUSPROP_FTSET_INFO,*PCLUSPROP_FTSET_INFO;
831
832 typedef CLUSPROP_DWORD CLUSPROP_DISK_SIGNATURE,*PCLUSPROP_DISK_SIGNATURE;
833 typedef struct CLUS_SCSI_ADDRESS {
834 __MINGW_EXTENSION union {
835 __MINGW_EXTENSION struct {
836 UCHAR PortNumber;
837 UCHAR PathId;
838 UCHAR TargetId;
839 UCHAR Lun;
840 };
841 DWORD dw;
842 };
843 } CLUS_SCSI_ADDRESS,*PCLUS_SCSI_ADDRESS;
844
845 typedef struct CLUSPROP_SCSI_ADDRESS
846 #ifdef __cplusplus
847 : public CLUSPROP_VALUE,public CLUS_SCSI_ADDRESS
848 #endif
849 {
850 #ifndef __cplusplus
851 CLUSPROP_VALUE;
852 CLUS_SCSI_ADDRESS;
853 #endif
854 } CLUSPROP_SCSI_ADDRESS,*PCLUSPROP_SCSI_ADDRESS;
855
856 typedef struct CLUS_NETNAME_VS_TOKEN_INFO {
857 DWORD ProcessID;
858 DWORD DesiredAccess;
859 WINBOOL InheritHandle;
860 } CLUS_NETNAME_VS_TOKEN_INFO,*PCLUS_NETNAME_VS_TOKEN_INFO;
861
862 typedef struct CLUS_MAINTENANCE_MODE_INFO {
863 WINBOOL InMaintenance;
864 } CLUS_MAINTENANCE_MODE_INFO,*PCLUS_MAINTENANCE_MODE_INFO;
865
866 typedef struct CLUSPROP_LIST {
867 DWORD nPropertyCount;
868 CLUSPROP_PROPERTY_NAME PropertyName;
869 } CLUSPROP_LIST,*PCLUSPROP_LIST;
870
871 typedef union CLUSPROP_BUFFER_HELPER {
872 BYTE *pb;
873 WORD *pw;
874 DWORD *pdw;
875 LONG *pl;
876 LPWSTR psz;
877 PCLUSPROP_LIST pList;
878 PCLUSPROP_SYNTAX pSyntax;
879 PCLUSPROP_PROPERTY_NAME pName;
880 PCLUSPROP_VALUE pValue;
881 PCLUSPROP_BINARY pBinaryValue;
882 PCLUSPROP_WORD pWordValue;
883 PCLUSPROP_DWORD pDwordValue;
884 PCLUSPROP_LONG pLongValue;
885 PCLUSPROP_ULARGE_INTEGER pULargeIntegerValue;
886 PCLUSPROP_LARGE_INTEGER pLargeIntegerValue;
887 PCLUSPROP_SZ pStringValue;
888 PCLUSPROP_MULTI_SZ pMultiSzValue;
889 PCLUSPROP_SECURITY_DESCRIPTOR pSecurityDescriptor;
890 PCLUSPROP_RESOURCE_CLASS pResourceClassValue;
891 PCLUSPROP_RESOURCE_CLASS_INFO pResourceClassInfoValue;
892 PCLUSPROP_DISK_SIGNATURE pDiskSignatureValue;
893 PCLUSPROP_SCSI_ADDRESS pScsiAddressValue;
894 PCLUSPROP_DISK_NUMBER pDiskNumberValue;
895 PCLUSPROP_PARTITION_INFO pPartitionInfoValue;
896 PCLUSPROP_REQUIRED_DEPENDENCY pRequiredDependencyValue;
897 } CLUSPROP_BUFFER_HELPER,*PCLUSPROP_BUFFER_HELPER;
898 #endif
899
900 #define ALIGN_CLUSPROP(count) ((count + 3) & ~3)
901 #define CLUSPROP_BINARY_DECLARE(name,cb) struct { CLUSPROP_SYNTAX Syntax; DWORD cbLength; BYTE rgb[(cb + 3) & ~3]; } name
902 #define CLUSPROP_SZ_DECLARE(name,cch) struct { CLUSPROP_SYNTAX Syntax; DWORD cbLength; WCHAR sz[(cch + 1) & ~1]; } name
903 #define CLUSPROP_PROPERTY_NAME_DECLARE(name,cch) CLUSPROP_SZ_DECLARE(name,cch)
904
905 #ifndef _CLUSTER_API_TYPES_
906 typedef enum CLUSTER_RESOURCE_ENUM {
907 CLUSTER_RESOURCE_ENUM_DEPENDS = 0x00000001,CLUSTER_RESOURCE_ENUM_PROVIDES = 0x00000002,CLUSTER_RESOURCE_ENUM_NODES = 0x00000004,
908 CLUSTER_RESOURCE_ENUM_ALL = (CLUSTER_RESOURCE_ENUM_DEPENDS | CLUSTER_RESOURCE_ENUM_PROVIDES | CLUSTER_RESOURCE_ENUM_NODES)
909 } CLUSTER_RESOURCE_ENUM;
910
911 typedef enum CLUSTER_RESOURCE_TYPE_ENUM {
912 CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001,CLUSTER_RESOURCE_TYPE_ENUM_ALL = (CLUSTER_RESOURCE_TYPE_ENUM_NODES)
913 } CLUSTER_RESOURCE_TYPE_ENUM;
914 #endif
915
916 HRESENUM WINAPI ClusterResourceOpenEnum(HRESOURCE hResource,DWORD dwType);
917 DWORD WINAPI ClusterResourceGetEnumCount(HRESENUM hResEnum);
918 DWORD WINAPI ClusterResourceEnum(HRESENUM hResEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName);
919 DWORD WINAPI ClusterResourceCloseEnum(HRESENUM hResEnum);
920 DWORD WINAPI CreateClusterResourceType(HCLUSTER hCluster,LPCWSTR lpszResourceTypeName,LPCWSTR lpszDisplayName,LPCWSTR lpszResourceTypeDll,DWORD dwLooksAlivePollInterval,DWORD dwIsAlivePollInterval);
921 DWORD WINAPI DeleteClusterResourceType(HCLUSTER hCluster,LPCWSTR lpszResourceTypeName);
922 HRESTYPEENUM WINAPI ClusterResourceTypeOpenEnum(HCLUSTER hCluster,LPCWSTR lpszResourceTypeName,DWORD dwType);
923 DWORD WINAPI ClusterResourceTypeGetEnumCount(HRESTYPEENUM hResTypeEnum);
924 DWORD WINAPI ClusterResourceTypeEnum(HRESTYPEENUM hResTypeEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName);
925 DWORD WINAPI ClusterResourceTypeCloseEnum(HRESTYPEENUM hResTypeEnum);
926
927 #ifndef _CLUSTER_API_TYPES_
928 typedef enum CLUSTER_NETWORK_ENUM {
929 CLUSTER_NETWORK_ENUM_NETINTERFACES = 0x00000001,CLUSTER_NETWORK_ENUM_ALL = CLUSTER_NETWORK_ENUM_NETINTERFACES
930 } CLUSTER_NETWORK_ENUM;
931
932 typedef enum CLUSTER_NETWORK_STATE {
933 ClusterNetworkStateUnknown = -1,ClusterNetworkUnavailable,ClusterNetworkDown,ClusterNetworkPartitioned,ClusterNetworkUp
934 } CLUSTER_NETWORK_STATE;
935
936 typedef enum CLUSTER_NETWORK_ROLE {
937 ClusterNetworkRoleNone = 0,ClusterNetworkRoleInternalUse = 0x00000001,ClusterNetworkRoleClientAccess = 0x00000002,
938 ClusterNetworkRoleInternalAndClient = 0x00000003
939 } CLUSTER_NETWORK_ROLE;
940 #endif
941
942 HNETWORK WINAPI OpenClusterNetwork(HCLUSTER hCluster,LPCWSTR lpszNetworkName);
943 WINBOOL WINAPI CloseClusterNetwork(HNETWORK hNetwork);
944 HCLUSTER WINAPI GetClusterFromNetwork(HNETWORK hNetwork);
945 HNETWORKENUM WINAPI ClusterNetworkOpenEnum(HNETWORK hNetwork,DWORD dwType);
946 DWORD WINAPI ClusterNetworkGetEnumCount(HNETWORKENUM hNetworkEnum);
947 DWORD WINAPI ClusterNetworkEnum(HNETWORKENUM hNetworkEnum,DWORD dwIndex,LPDWORD lpdwType,LPWSTR lpszName,LPDWORD lpcchName);
948 DWORD WINAPI ClusterNetworkCloseEnum(HNETWORKENUM hNetworkEnum);
949 CLUSTER_NETWORK_STATE WINAPI GetClusterNetworkState(HNETWORK hNetwork);
950 DWORD WINAPI SetClusterNetworkName(HNETWORK hNetwork,LPCWSTR lpszName);
951 DWORD WINAPI GetClusterNetworkId(HNETWORK hNetwork,LPWSTR lpszNetworkId,LPDWORD lpcchName);
952 DWORD WINAPI ClusterNetworkControl(HNETWORK hNetwork,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned);
953
954 #ifndef _CLUSTER_API_TYPES_
955 typedef enum CLUSTER_NETINTERFACE_STATE {
956 ClusterNetInterfaceStateUnknown = -1,ClusterNetInterfaceUnavailable,ClusterNetInterfaceFailed,ClusterNetInterfaceUnreachable,ClusterNetInterfaceUp
957 } CLUSTER_NETINTERFACE_STATE;
958 #endif
959
960 HNETINTERFACE WINAPI OpenClusterNetInterface(HCLUSTER hCluster,LPCWSTR lpszInterfaceName);
961 DWORD WINAPI GetClusterNetInterface(HCLUSTER hCluster,LPCWSTR lpszNodeName,LPCWSTR lpszNetworkName,LPWSTR lpszInterfaceName,LPDWORD lpcchInterfaceName);
962 WINBOOL WINAPI CloseClusterNetInterface(HNETINTERFACE hNetInterface);
963 HCLUSTER WINAPI GetClusterFromNetInterface(HNETINTERFACE hNetInterface);
964 CLUSTER_NETINTERFACE_STATE WINAPI GetClusterNetInterfaceState(HNETINTERFACE hNetInterface);
965 DWORD WINAPI ClusterNetInterfaceControl(HNETINTERFACE hNetInterface,HNODE hHostNode,DWORD dwControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned);
966 HKEY WINAPI GetClusterKey(HCLUSTER hCluster,REGSAM samDesired);
967 HKEY WINAPI GetClusterGroupKey(HGROUP hGroup,REGSAM samDesired);
968 HKEY WINAPI GetClusterResourceKey(HRESOURCE hResource,REGSAM samDesired);
969 HKEY WINAPI GetClusterNodeKey(HNODE hNode,REGSAM samDesired);
970 HKEY WINAPI GetClusterNetworkKey(HNETWORK hNetwork,REGSAM samDesired);
971 HKEY WINAPI GetClusterNetInterfaceKey(HNETINTERFACE hNetInterface,REGSAM samDesired);
972 LONG WINAPI ClusterRegCreateKey(HKEY hKey,LPCWSTR lpszSubKey,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
973 LONG WINAPI ClusterRegOpenKey(HKEY hKey,LPCWSTR lpszSubKey,REGSAM samDesired,PHKEY phkResult);
974 LONG WINAPI ClusterRegDeleteKey(HKEY hKey,LPCWSTR lpszSubKey);
975 LONG WINAPI ClusterRegCloseKey(HKEY hKey);
976 LONG WINAPI ClusterRegEnumKey(HKEY hKey,DWORD dwIndex,LPWSTR lpszName,LPDWORD lpcchName,PFILETIME lpftLastWriteTime);
977 DWORD WINAPI ClusterRegSetValue(HKEY hKey,LPCWSTR lpszValueName,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
978 DWORD WINAPI ClusterRegDeleteValue(HKEY hKey,LPCWSTR lpszValueName);
979 LONG WINAPI ClusterRegQueryValue(HKEY hKey,LPCWSTR lpszValueName,LPDWORD lpdwValueType,LPBYTE lpData,LPDWORD lpcbData);
980 DWORD WINAPI ClusterRegEnumValue(HKEY hKey,DWORD dwIndex,LPWSTR lpszValueName,LPDWORD lpcchValueName,LPDWORD lpdwType,LPBYTE lpData,LPDWORD lpcbData);
981 LONG WINAPI ClusterRegQueryInfoKey(HKEY hKey,LPDWORD lpcSubKeys,LPDWORD lpcchMaxSubKeyLen,LPDWORD lpcValues,LPDWORD lpcchMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
982 LONG WINAPI ClusterRegGetKeySecurity (HKEY hKey,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD lpcbSecurityDescriptor);
983 LONG WINAPI ClusterRegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
984
985 #ifdef __cplusplus
986 }
987 #endif
988
989 #ifndef _CLUSTER_API_TYPES_
990 #define _CLUSTER_API_TYPES_
991 #endif
992 #endif