check return value before using key_values
[Samba.git] / librpc / idl / clusapi.idl
blob6c86f10638ff9ecc730efa96a2d1dc84ebc453c7
1 import "winreg.idl", "misc.idl";
3 #include "idl_types.h"
6 uuid("b97db8b2-4c63-11cf-bff6-08002be23f2f"),
7 version(3.0),
8 pointer_default(unique),
9 endpoint("ncacn_ip_tcp:"),
10 authservice("MSServerClusterMgmtAPI"),
11 helpstring("Failover Cluster Management API (clusapi)")
13 interface clusapi
15 #if 0
17 * pidl does not yet have a real [context_handle] implementation, so we
18 * just use some defines here.
21 typedef [context_handle] void *HCLUSTER_RPC;
22 typedef [context_handle] void *HNODE_RPC;
23 typedef [context_handle] void *HGROUP_RPC;
24 typedef [context_handle] void *HRES_RPC;
25 typedef [context_handle] void *HKEY_RPC;
26 typedef [context_handle] void *HNOTIFY_RPC;
27 typedef [context_handle] void *HNETWORK_RPC;
28 typedef [context_handle] void *HNETINTERFACE_RPC;
29 typedef [context_handle] void *HBATCH_PORT_RPC;
30 #else
31 #define HCLUSTER_RPC policy_handle
32 #define HNODE_RPC policy_handle
33 #define HGROUP_RPC policy_handle
34 #define HRES_RPC policy_handle
35 #define HKEY_RPC policy_handle
36 #define HNOTIFY_RPC policy_handle
37 #define HNETWORK_RPC policy_handle
38 #define HNETINTERFACE_RPC policy_handle
39 #define HBATCH_PORT_RPC policy_handle
40 #endif
42 typedef struct {
43 [ size_is( cbInSecurityDescriptor ), length_is( cbOutSecurityDescriptor ) ] uint8 *lpSecurityDescriptor;
44 uint32 cbInSecurityDescriptor;
45 uint32 cbOutSecurityDescriptor;
46 } RPC_SECURITY_DESCRIPTOR;
48 typedef struct {
49 uint32 nLength;
50 RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor;
51 long bInheritHandle;
52 } RPC_SECURITY_ATTRIBUTES;
54 typedef struct {
55 [value(20)] uint32 dwSize;
56 uint32 dwClusterHighestVersion;
57 uint32 dwClusterLowestVersion;
58 uint32 dwFlags;
59 uint32 dwReserved;
60 } CLUSTER_OPERATIONAL_VERSION_INFO;
62 typedef struct {
63 uint32 NodeId;
64 boolean8 SetAttempted;
65 uint32 ReturnStatus;
66 } IDL_CLUSTER_SET_PASSWORD_STATUS;
68 typedef enum {
69 IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
70 } IDL_CLUSTER_SET_PASSWORD_FLAGS;
72 typedef struct {
73 uint32 dwVersion;
74 uint32 dwGroupType;
75 } CLUSTER_CREATE_GROUP_INFO_RPC;
77 /*****************/
78 /* Function 0x00 */
80 #if 0
82 * pidl cannot generate code for functions that return structures in
83 * IDL, therefore pretend the function is void and add the returned
84 * structure as an out parameter. This is what we do with pretty much
85 * all the Open calls right now in this interface - gd
88 HCLUSTER_RPC
89 clusapi_OpenCluster(
90 [ out ] WERROR *Status
92 #else
93 void
94 clusapi_OpenCluster(
95 [ out ] WERROR *Status,
96 [ out ] HCLUSTER_RPC *Cluster
98 #endif
100 /*****************/
101 /* Function 0x01 */
103 WERROR
104 clusapi_CloseCluster(
105 [ in, out ] HCLUSTER_RPC *Cluster
108 /*****************/
109 /* Function 0x02 */
111 WERROR
112 clusapi_SetClusterName(
113 [ in, string ] [charset(UTF16)] uint16 *NewClusterName,
114 [ out ] WERROR *rpc_status
117 /*****************/
118 /* Function 0x03 */
120 WERROR
121 clusapi_GetClusterName(
122 [ out, string ] [charset(UTF16)] uint16 **ClusterName,
123 [ out, string ] [charset(UTF16)] uint16 **NodeName
126 /*****************/
127 /* Function 0x04 */
129 WERROR
130 clusapi_GetClusterVersion(
131 [ out ] uint16 *lpwMajorVersion,
132 [ out ] uint16 *lpwMinorVersion,
133 [ out ] uint16 *lpwBuildNumber,
134 [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
135 [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion
138 /*****************/
139 /* Function 0x05 */
141 WERROR
142 clusapi_GetQuorumResource(
143 [ out, string ] [charset(UTF16)] uint16 **lpszResourceName,
144 [ out, string ] [charset(UTF16)] uint16 **lpszDeviceName,
145 [ out ] uint32 *pdwMaxQuorumLogSize,
146 [ out ] WERROR *rpc_status
149 /*****************/
150 /* Function 0x06 */
152 WERROR
153 clusapi_SetQuorumResource(
154 [ in ] HRES_RPC hResource,
155 [ in, string ] [charset(UTF16)] uint16 *lpszDeviceName,
156 [ in ] uint32 dwMaxQuorumLogSize,
157 [ out ] WERROR *rpc_status
160 typedef [bitmap32bit] bitmap {
161 CLUSTER_ENUM_NODE = 0x00000001,
162 CLUSTER_ENUM_RESTYPE = 0x00000002,
163 CLUSTER_ENUM_RESOURCE = 0x00000004,
164 CLUSTER_ENUM_GROUP = 0x00000008,
165 CLUSTER_ENUM_NETWORK = 0x00000010,
166 CLUSTER_ENUM_NETINTERFACE = 0x00000020,
167 CLUSTER_ENUM_INTERNAL_NETWORK = 0x80000000,
168 CLUSTER_ENUM_SHARED_VOLUME_RESOURCE = 0x40000000
169 } ClusterEnumType;
171 typedef struct {
172 ClusterEnumType Type;
173 [string] [charset(UTF16)] uint16 *Name;
174 } ENUM_ENTRY;
176 typedef struct {
177 uint32 EntryCount;
178 [size_is(EntryCount)] ENUM_ENTRY Entry[*];
179 } ENUM_LIST;
181 typedef struct {
182 [string] [charset(UTF16)] uint16 *Name;
183 [string] [charset(UTF16)] uint16 *Id;
184 uint32 dwState;
185 [string] [charset(UTF16)] uint16 *Owner;
186 uint32 dwFlags;
187 uint32 cbProperties;
188 [size_is(cbProperties)] uint8* Properties;
189 uint32 cbRoProperties;
190 [size_is(cbRoProperties)] uint8* RoProperties;
191 } GROUP_ENUM_ENTRY;
193 typedef struct {
194 [string] [charset(UTF16)] uint16 *Name;
195 [string] [charset(UTF16)] uint16 *Id;
196 [string] [charset(UTF16)] uint16 *OwnerName;
197 [string] [charset(UTF16)] uint16 *OwnerId;
198 uint32 cbProperties;
199 [size_is(cbProperties)] uint8* Properties;
200 uint32 cbRoProperties;
201 [size_is(cbRoProperties)] uint8* RoProperties;
202 } RESOURCE_ENUM_ENTRY;
204 typedef struct {
205 uint32 EntryCount;
206 [size_is(EntryCount)] GROUP_ENUM_ENTRY Entry[*];
207 } GROUP_ENUM_LIST;
209 typedef struct {
210 uint32 EntryCount;
211 [size_is(EntryCount)] RESOURCE_ENUM_ENTRY Entry[*];
212 } RESOURCE_ENUM_LIST;
214 /*****************/
215 /* Function 0x07 */
217 WERROR
218 clusapi_CreateEnum(
219 [ in ] ClusterEnumType dwType,
220 [ out ] ENUM_LIST **ReturnEnum,
221 [ out ] WERROR *rpc_status
224 /*****************/
225 /* Function 0x08 */
227 #if 0
228 HRES_RPC
229 clusapi_OpenResource(
230 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
231 [ out ] WERROR *Status,
232 [ out ] WERROR *rpc_status
234 #else
235 void
236 clusapi_OpenResource(
237 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
238 [ out ] WERROR *Status,
239 [ out ] WERROR *rpc_status,
240 [ out ] HRES_RPC *hResource
242 #endif
243 /*****************/
244 /* Function 0x09 */
246 typedef [v1_enum] enum {
247 CLUSTER_RESOURCE_DEFAULT_MONITOR = 0x00000000,
248 CLUSTER_RESOURCE_SEPARATE_MONITOR = 0x00000001
249 } clusapi_CreateResourceFlags;
251 #if 0
252 HRES_RPC
253 clusapi_CreateResource(
254 [ in ] HGROUP_RPC hGroup,
255 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
256 [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
257 [ in ] clusapi_CreateResourceFlags dwFlags,
258 [ out ] WERROR *Status,
259 [ out ] WERROR *rpc_status
261 #else
262 void
263 clusapi_CreateResource(
264 [ in ] HGROUP_RPC hGroup,
265 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
266 [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
267 [ in ] clusapi_CreateResourceFlags dwFlags,
268 [ out ] WERROR *Status,
269 [ out ] WERROR *rpc_status,
270 [ out ] HRES_RPC *hResource
272 #endif
273 /*****************/
274 /* Function 0x0A */
276 WERROR
277 clusapi_DeleteResource(
278 [ in ] HRES_RPC hResource,
279 [ out ] WERROR *rpc_status
282 /*****************/
283 /* Function 0x0B */
285 WERROR
286 clusapi_CloseResource(
287 [ in, out ] HRES_RPC *Resource
290 /*****************/
291 /* Function 0x0C */
293 typedef [v1_enum] enum {
294 ClusterResourceInitializing = 0x00000001,
295 ClusterResourceOnline = 0x00000002,
296 ClusterResourceOffline = 0x00000003,
297 ClusterResourceFailed = 0x00000004,
298 ClusterResourceOnlinePending = 0x00000081,
299 ClusterResourceOfflinePending = 0x00000082,
300 ClusterResourceStateUnknown = 0xFFFFFFFF
301 } clusapi_ClusterResourceState;
303 WERROR
304 clusapi_GetResourceState(
305 [ in ] HRES_RPC hResource,
306 [ out ] clusapi_ClusterResourceState *State,
307 [ out, string ] [charset(UTF16)] uint16 **NodeName,
308 [ out, string ] [charset(UTF16)] uint16 **GroupName,
309 [ out ] WERROR *rpc_status
312 /*****************/
313 /* Function 0x0D */
315 WERROR
316 clusapi_SetResourceName(
317 [ in ] HRES_RPC hResource,
318 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
319 [ out ] WERROR *rpc_status
322 /*****************/
323 /* Function 0x0E */
325 WERROR
326 clusapi_GetResourceId(
327 [ in ] HRES_RPC hResource,
328 [ out, string ] [charset(UTF16)] uint16 **pGuid,
329 [ out ] WERROR *rpc_status
332 /*****************/
333 /* Function 0x0F */
335 WERROR
336 clusapi_GetResourceType(
337 [ in ] HRES_RPC hResource,
338 [ out, string ] [charset(UTF16)] uint16 **lpszResourceType,
339 [ out ] WERROR *rpc_status
342 /*****************/
343 /* Function 0x10 */
345 WERROR
346 clusapi_FailResource(
347 [ in ] HRES_RPC hResource,
348 [ out ] WERROR *rpc_status
351 /*****************/
352 /* Function 0x11 */
354 WERROR
355 clusapi_OnlineResource(
356 [ in ] HRES_RPC hResource,
357 [ out ] WERROR *rpc_status
360 /*****************/
361 /* Function 0x12 */
363 WERROR
364 clusapi_OfflineResource(
365 [ in ] HRES_RPC hResource,
366 [ out ] WERROR *rpc_status
369 /*****************/
370 /* Function 0x13 */
372 WERROR
373 clusapi_AddResourceDependency(
374 [ in ] HRES_RPC hResource,
375 [ in ] HRES_RPC hDependsOn,
376 [ out ] WERROR *rpc_status
379 /*****************/
380 /* Function 0x14 */
382 WERROR
383 clusapi_RemoveResourceDependency(
384 [ in ] HRES_RPC hResource,
385 [ in ] HRES_RPC hDependsOn,
386 [ out ] WERROR *rpc_status
389 /*****************/
390 /* Function 0x15 */
392 WERROR
393 clusapi_CanResourceBeDependent(
394 [ in ] HRES_RPC hResource,
395 [ in ] HRES_RPC hResourceDependent,
396 [ out ] WERROR *rpc_status
399 /*****************/
400 /* Function 0x16 */
402 WERROR
403 clusapi_CreateResEnum(
404 [ in ] HRES_RPC hResource,
405 [ in ] uint32 dwType,
406 [ out ] ENUM_LIST **ReturnEnum,
407 [ out ] WERROR *rpc_status
410 /*****************/
411 /* Function 0x17 */
413 WERROR
414 clusapi_AddResourceNode(
415 [ in ] HRES_RPC hResource,
416 [ in ] HNODE_RPC hNode,
417 [ out ] WERROR *rpc_status
420 /*****************/
421 /* Function 0x18 */
423 WERROR
424 clusapi_RemoveResourceNode(
425 [ in ] HRES_RPC hResource,
426 [ in ] HNODE_RPC hNode,
427 [ out ] WERROR *rpc_status
430 /*****************/
431 /* Function 0x19 */
433 WERROR
434 clusapi_ChangeResourceGroup(
435 [ in ] HRES_RPC hResource,
436 [ in ] HGROUP_RPC hGroup,
437 [ out ] WERROR *rpc_status
440 /*****************/
441 /* Function 0x1A */
443 WERROR
444 clusapi_CreateResourceType(
445 [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
446 [ in, string ] [charset(UTF16)] uint16 *lpszDisplayName,
447 [ in, string ] [charset(UTF16)] uint16 *lpszDllName,
448 [ in ] uint32 dwLooksAlive,
449 [ in ] uint32 dwIsAlive,
450 [ out ] WERROR *rpc_status
453 /*****************/
454 /* Function 0x1B */
456 WERROR
457 clusapi_DeleteResourceType(
458 [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
459 [ out ] WERROR *rpc_status
462 /*****************/
463 /* Function 0x1C */
464 #if 0
465 HKEY_RPC
466 clusapi_GetRootKey(
467 [ in ] winreg_AccessMask samDesired,
468 [ out ] WERROR *Status,
469 [ out ] WERROR *rpc_status
471 #else
472 void
473 clusapi_GetRootKey(
474 [ in ] winreg_AccessMask samDesired,
475 [ out ] WERROR *Status,
476 [ out ] WERROR *rpc_status,
477 [ out ] HKEY_RPC *phKey
479 #endif
480 /*****************/
481 /* Function 0x1D */
482 #if 0
483 HKEY_RPC
484 clusapi_CreateKey(
485 [ in ] HKEY_RPC hKey,
486 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
487 [ in ] uint32 dwOptions,
488 [ in ] winreg_AccessMask samDesired,
489 [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
490 [ out ] uint32 *lpdwDisposition,
491 [ out ] WERROR *Status,
492 [ out ] WERROR *rpc_status
494 #else
495 void
496 clusapi_CreateKey(
497 [ in ] HKEY_RPC hKey,
498 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
499 [ in ] uint32 dwOptions,
500 [ in ] winreg_AccessMask samDesired,
501 [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
502 [ out ] uint32 *lpdwDisposition,
503 [ out ] WERROR *Status,
504 [ out ] WERROR *rpc_status,
505 [ out ] HKEY_RPC *phKey
507 #endif
508 /*****************/
509 /* Function 0x1E */
510 #if 0
511 HKEY_RPC
512 clusapi_OpenKey(
513 [ in ] HKEY_RPC hKey,
514 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
515 [ in ] winreg_AccessMask samDesired,
516 [ out ] WERROR *Status,
517 [ out ] WERROR *rpc_status
519 #else
520 void
521 clusapi_OpenKey(
522 [ in ] HKEY_RPC hKey,
523 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
524 [ in ] winreg_AccessMask samDesired,
525 [ out ] WERROR *Status,
526 [ out ] WERROR *rpc_status,
527 [ out ] HKEY_RPC *phKey
529 #endif
530 /*****************/
531 /* Function 0x1F */
533 WERROR
534 clusapi_EnumKey(
535 [ in ] HKEY_RPC hKey,
536 [ in ] uint32 dwIndex,
537 [ out, string ] [charset(UTF16)] uint16 **KeyName,
538 [ out ] NTTIME *lpftLastWriteTime,
539 [ out ] WERROR *rpc_status
542 /*****************/
543 /* Function 0x20 */
545 WERROR
546 clusapi_SetValue(
547 [ in ] HKEY_RPC hKey,
548 [ in, string ] [charset(UTF16)] uint16 *lpValueName,
549 [ in ] winreg_Type dwType,
550 [ in, size_is(cbData) ] uint8 *lpData,
551 [ in ] uint32 cbData,
552 [ out ] WERROR *rpc_status
555 /*****************/
556 /* Function 0x21 */
558 WERROR
559 clusapi_DeleteValue(
560 [ in ] HKEY_RPC hKey,
561 [ in, string ] [charset(UTF16)] uint16 *lpValueName,
562 [ out ] WERROR *rpc_status
565 /*****************/
566 /* Function 0x22 */
568 WERROR
569 clusapi_QueryValue(
570 [ in ] HKEY_RPC hKey,
571 [ in, string ] [charset(UTF16)] uint16 *lpValueName,
572 [ out ] winreg_Type *lpValueType,
573 [ out, size_is(cbData) ] uint8 *lpData,
574 [ in ] uint32 cbData,
575 [ out ] uint32 *lpcbRequired,
576 [ out ] WERROR *rpc_status
579 /*****************/
580 /* Function 0x23 */
582 WERROR
583 clusapi_DeleteKey(
584 [ in ] HKEY_RPC hKey,
585 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
586 [ out ] WERROR *rpc_status
589 /*****************/
590 /* Function 0x24 */
592 WERROR
593 clusapi_EnumValue(
594 [ in ] HKEY_RPC hKey,
595 [ in ] uint32 dwIndex,
596 [ out, string ] [charset(UTF16)] uint16 **lpValueName,
597 [ out ] winreg_Type *lpType,
598 [ out, size_is(*lpcbData) ] uint8 *lpData,
599 [ in, out ] uint32 *lpcbData,
600 [ out ] uint32 *TotalSize,
601 [ out ] WERROR *rpc_status
604 /*****************/
605 /* Function 0x25 */
607 WERROR
608 clusapi_CloseKey(
609 [ in, out ] HKEY_RPC *pKey
612 /*****************/
613 /* Function 0x26 */
615 WERROR
616 clusapi_QueryInfoKey(
617 [ in ] HKEY_RPC hKey,
618 [ out ] uint32 *lpcSubKeys,
619 [ out ] uint32 *lpcbMaxSubKeyLen,
620 [ out ] uint32 *lpcValues,
621 [ out ] uint32 *lpcbMaxValueNameLen,
622 [ out ] uint32 *lpcbMaxValueLen,
623 [ out ] uint32 *lpcbSecurityDescriptor,
624 [ out ] NTTIME *lpftLastWriteTime,
625 [ out ] WERROR *rpc_status
628 /*****************/
629 /* Function 0x27 */
631 WERROR
632 clusapi_SetKeySecurity(
633 [ in ] HKEY_RPC hKey,
634 [ in ] uint32 SecurityInformation,
635 [ in ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
636 [ out ] WERROR *rpc_status
639 /*****************/
640 /* Function 0x28 */
642 WERROR
643 clusapi_GetKeySecurity(
644 [ in ] HKEY_RPC hKey,
645 [ in ] uint32 SecurityInformation,
646 [ in, out ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
647 [ out ] WERROR *rpc_status
650 /*****************/
651 /* Function 0x29 */
652 #if 0
653 HGROUP_RPC
654 clusapi_OpenGroup(
655 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
656 [ out ] WERROR *Status,
657 [ out ] WERROR *rpc_status
659 #else
660 void
661 clusapi_OpenGroup(
662 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
663 [ out ] WERROR *Status,
664 [ out ] WERROR *rpc_status,
665 [ out ] HGROUP_RPC *hGroup
667 #endif
668 /*****************/
669 /* Function 0x2A */
670 #if 0
671 HGROUP_RPC
672 clusapi_CreateGroup(
673 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
674 [ out ] WERROR *Status,
675 [ out ] WERROR *rpc_status
677 #else
678 void
679 clusapi_CreateGroup(
680 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
681 [ out ] WERROR *Status,
682 [ out ] WERROR *rpc_status,
683 [ out ] HGROUP_RPC *hGroup
685 #endif
686 /*****************/
687 /* Function 0x2B */
689 WERROR
690 clusapi_DeleteGroup(
691 [ in ] HGROUP_RPC Group,
692 [ in ] boolean8 force,
693 [ out ] WERROR *rpc_status
696 /*****************/
697 /* Function 0x2C */
699 WERROR
700 clusapi_CloseGroup(
701 [ in, out ] HGROUP_RPC *Group
704 /*****************/
705 /* Function 0x2D */
707 typedef [v1_enum] enum {
708 ClusterGroupOnline = 0x00000000,
709 ClusterGroupOffline = 0x00000001,
710 ClusterGroupFailed = 0x00000002,
711 ClusterGroupPartialOnline = 0x00000003,
712 ClusterGroupPending = 0x00000004,
713 ClusterGroupStateUnknown = 0xFFFFFFFF
714 } clusapi_ClusterGroupState;
716 WERROR
717 clusapi_GetGroupState(
718 [ in ] HGROUP_RPC hGroup,
719 [ out ] clusapi_ClusterGroupState *State,
720 [ out, string ] [charset(UTF16)] uint16 **NodeName,
721 [ out ] WERROR *rpc_status
724 /*****************/
725 /* Function 0x2E */
727 WERROR
728 clusapi_SetGroupName(
729 [ in ] HGROUP_RPC hGroup,
730 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
731 [ out ] WERROR *rpc_status
734 /*****************/
735 /* Function 0x2F */
737 WERROR
738 clusapi_GetGroupId(
739 [ in ] HGROUP_RPC hGroup,
740 [ out, string ] [charset(UTF16)] uint16 **pGuid,
741 [ out ] WERROR *rpc_status
744 /*****************/
745 /* Function 0x30 */
747 WERROR
748 clusapi_GetNodeId(
749 [ in ] HNODE_RPC hNode,
750 [ out, string ] [charset(UTF16)] uint16 **pGuid,
751 [ out ] WERROR *rpc_status
754 /*****************/
755 /* Function 0x31 */
757 WERROR
758 clusapi_OnlineGroup(
759 [ in ] HGROUP_RPC hGroup,
760 [ out ] WERROR *rpc_status
763 /*****************/
764 /* Function 0x32 */
766 WERROR
767 clusapi_OfflineGroup(
768 [ in ] HGROUP_RPC hGroup,
769 [ out ] WERROR *rpc_status
772 /*****************/
773 /* Function 0x33 */
775 WERROR
776 clusapi_MoveGroup(
777 [ in ] HGROUP_RPC hGroup,
778 [ out ] WERROR *rpc_status
781 /*****************/
782 /* Function 0x34 */
784 WERROR
785 clusapi_MoveGroupToNode(
786 [ in ] HGROUP_RPC hGroup,
787 [ in ] HNODE_RPC hNode,
788 [ out ] WERROR *rpc_status
791 /*****************/
792 /* Function 0x35 */
794 typedef [bitmap32bit] bitmap {
795 CLUSTER_GROUP_ENUM_CONTAINS = 0x00000001,
796 CLUSTER_GROUP_ENUM_NODES = 0x00000002
797 } ClusterGroupEnumType;
799 WERROR
800 clusapi_CreateGroupResourceEnum(
801 [ in ] HGROUP_RPC hGroup,
802 [ in ] ClusterGroupEnumType dwType,
803 [ out ] ENUM_LIST **ReturnEnum,
804 [ out ] WERROR *rpc_status
807 /*****************/
808 /* Function 0x36 */
810 WERROR
811 clusapi_SetGroupNodeList(
812 [ in ] HGROUP_RPC hGroup,
813 [ in, unique, size_is(cchListSize) ] uint16 *multiSzNodeList,
814 [ in ] uint32 cchListSize,
815 [ out ] WERROR *rpc_status
818 /*****************/
819 /* Function 0x37 */
820 #if 0
821 HNOTIFY_RPC
822 clusapi_CreateNotify(
823 [ out ] WERROR *Status,
824 [ out ] WERROR *rpc_status
826 #else
827 void
828 clusapi_CreateNotify(
829 [ out ] WERROR *Status,
830 [ out ] WERROR *rpc_status,
831 [ out ] HNOTIFY_RPC *hNotify
833 #endif
834 /*****************/
835 /* Function 0x38 */
837 WERROR
838 clusapi_CloseNotify(
839 [ in, out ] HNOTIFY_RPC *Notify
842 /*****************/
843 /* Function 0x39 */
845 WERROR
846 clusapi_AddNotifyCluster(
847 [ in ] HNOTIFY_RPC hNotify,
848 [ in ] HCLUSTER_RPC hCluster,
849 [ in ] uint32 dwFilter,
850 [ in ] uint32 dwNotifyKey,
851 [ out ] WERROR *rpc_status
854 /*****************/
855 /* Function 0x3A */
857 WERROR
858 clusapi_AddNotifyNode(
859 [ in ] HNOTIFY_RPC hNotify,
860 [ in ] HNODE_RPC hNode,
861 [ in ] uint32 dwFilter,
862 [ in ] uint32 dwNotifyKey,
863 [ out ] uint32 *dwStateSequence,
864 [ out ] WERROR *rpc_status
867 /*****************/
868 /* Function 0x3B */
870 WERROR
871 clusapi_AddNotifyGroup(
872 [ in ] HNOTIFY_RPC hNotify,
873 [ in ] HGROUP_RPC hGroup,
874 [ in ] uint32 dwFilter,
875 [ in ] uint32 dwNotifyKey,
876 [ out ] uint32 *dwStateSequence,
877 [ out ] WERROR *rpc_status
880 /*****************/
881 /* Function 0x3C */
883 WERROR
884 clusapi_AddNotifyResource(
885 [ in ] HNOTIFY_RPC hNotify,
886 [ in ] HRES_RPC hResource,
887 [ in ] uint32 dwFilter,
888 [ in ] uint32 dwNotifyKey,
889 [ out ] uint32 *dwStateSequence,
890 [ out ] WERROR *rpc_status
893 /*****************/
894 /* Function 0x3D */
896 WERROR
897 clusapi_AddNotifyKey(
898 [ in ] HNOTIFY_RPC hNotify,
899 [ in ] HKEY_RPC hKey,
900 [ in ] uint32 dwNotifyKey,
901 [ in ] uint32 Filter,
902 [ in ] boolean8 WatchSubTree,
903 [ out ] WERROR *rpc_status
906 /*****************/
907 /* Function 0x3E */
909 WERROR
910 clusapi_ReAddNotifyNode(
911 [ in ] HNOTIFY_RPC hNotify,
912 [ in ] HNODE_RPC hNode,
913 [ in ] uint32 dwFilter,
914 [ in ] uint32 dwNotifyKey,
915 [ in ] uint32 StateSequence,
916 [ out ] WERROR *rpc_status
919 /*****************/
920 /* Function 0x3F */
922 WERROR
923 clusapi_ReAddNotifyGroup(
924 [ in ] HNOTIFY_RPC hNotify,
925 [ in ] HGROUP_RPC hGroup,
926 [ in ] uint32 dwFilter,
927 [ in ] uint32 dwNotifyKey,
928 [ in ] uint32 StateSequence,
929 [ out ] WERROR *rpc_status
932 /*****************/
933 /* Function 0x40 */
935 WERROR
936 clusapi_ReAddNotifyResource(
937 [ in ] HNOTIFY_RPC hNotify,
938 [ in ] HRES_RPC hResource,
939 [ in ] uint32 dwFilter,
940 [ in ] uint32 dwNotifyKey,
941 [ in ] uint32 StateSequence,
942 [ out ] WERROR *rpc_status
945 /*****************/
946 /* Function 0x41 */
948 WERROR
949 clusapi_GetNotify(
950 [ in ] HNOTIFY_RPC hNotify,
951 [ out ] uint32 *dwNotifyKey,
952 [ out ] uint32 *dwFilter,
953 [ out ] uint32 *dwStateSequence,
954 [ out, string ] [charset(UTF16)] uint16 **Name,
955 [ out ] WERROR *rpc_status
958 /*****************/
959 /* Function 0x42 */
960 #if 0
961 HNODE_RPC
962 clusapi_OpenNode(
963 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
964 [ out ] WERROR *Status,
965 [ out ] WERROR *rpc_status
967 #else
968 void
969 clusapi_OpenNode(
970 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
971 [ out ] WERROR *Status,
972 [ out ] WERROR *rpc_status,
973 [ out ] HNODE_RPC *hNode
975 #endif
976 /*****************/
977 /* Function 0x43 */
979 WERROR
980 clusapi_CloseNode(
981 [ in, out ] HNODE_RPC *Node
984 /*****************/
985 /* Function 0x44 */
987 typedef [v1_enum] enum {
988 ClusterNodeUp = 0x00000000,
989 ClusterNodeDown = 0x00000001,
990 ClusterNodePaused = 0x00000002,
991 ClusterNodeJoining = 0x00000003,
992 ClusterNodeStateUnknown = 0xFFFFFFFF
993 } clusapi_ClusterNodeState;
995 WERROR
996 clusapi_GetNodeState(
997 [ in ] HNODE_RPC hNode,
998 [ out ] clusapi_ClusterNodeState *State,
999 [ out ] WERROR *rpc_status
1002 /*****************/
1003 /* Function 0x45 */
1005 WERROR
1006 clusapi_PauseNode(
1007 [ in ] HNODE_RPC hNode,
1008 [ out ] WERROR *rpc_status
1011 /*****************/
1012 /* Function 0x46 */
1014 WERROR
1015 clusapi_ResumeNode(
1016 [ in ] HNODE_RPC hNode,
1017 [ out ] WERROR *rpc_status
1020 /*****************/
1021 /* Function 0x47 */
1023 WERROR
1024 clusapi_EvictNode(
1025 [ in ] HNODE_RPC hNode,
1026 [ out ] WERROR *rpc_status
1029 /*****************/
1030 /* Function 0x48 */
1032 WERROR
1033 clusapi_NodeResourceControl(
1034 [ in ] HRES_RPC hResource,
1035 [ in ] HNODE_RPC hNode,
1036 [ in ] uint32 dwControlCode,
1037 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1038 [ in ] uint32 nInBufferSize,
1039 [ out, size_is(nOutBufferSize),
1040 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1041 [ in ] uint32 nOutBufferSize,
1042 [ out ] uint32 *lpBytesReturned,
1043 [ out ] uint32 *lpcbRequired,
1044 [ out ] WERROR *rpc_status
1047 /*****************/
1048 /* Function 0x49 */
1050 typedef [v1_enum] enum {
1051 CLUS_RESCLASS_UNKNOWN = 0x00000000,
1052 CLUS_RESCLASS_STORAGE = 0x00000001,
1053 CLUS_RESCLASS_NETWORK = 0x00000002
1054 } clusapi_ResourceClass;
1056 typedef [public] struct {
1057 clusapi_ResourceClass Class;
1058 uint32 SubClass;
1059 } CLUS_RESOURCE_CLASS_INFO;
1061 typedef [v1_enum] enum {
1062 CLUSCTL_RESOURCE_UNKNOWN = 0x01000000,
1063 CLUSCTL_RESOURCE_GET_CHARACTERISTICS = 0x01000005,
1064 CLUSCTL_RESOURCE_GET_FLAGS = 0x01000009,
1065 CLUSCTL_RESOURCE_GET_CLASS_INFO = 0x0100000D,
1066 CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES = 0x01000011,
1067 CLUSCTL_RESOURCE_GET_NAME = 0x01000029,
1068 CLUSCTL_RESOURCE_GET_RESOURCE_TYPE = 0x0100002D,
1069 CLUSCTL_RESOURCE_GET_ID = 0x01000039,
1070 CLUSCTL_RESOURCE_ENUM_COMMON_PROPERTIES = 0x01000051,
1071 CLUSCTL_RESOURCE_GET_RO_COMMON_PROPERTIES = 0x01000055,
1072 CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES = 0x01000059,
1073 CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES = 0x0140005E,
1074 CLUSCTL_RESOURCE_VALIDATE_COMMON_PROPERTIES = 0x01000061,
1075 CLUSCTL_RESOURCE_GET_COMMON_PROPERTY_FMTS = 0x01000065,
1076 CLUSCTL_RESOURCE_ENUM_PRIVATE_PROPERTIES = 0x01000079,
1077 CLUSCTL_RESOURCE_GET_RO_PRIVATE_PROPERTIES = 0x0100007D,
1078 CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES = 0x01000081,
1079 CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES = 0x01400086,
1080 CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES = 0x01000089,
1081 CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTY_FMTS = 0x0100008D,
1082 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT = 0x014000A2,
1083 CLUSCTL_RESOURCE_DELETE_REGISTRY_CHECKPOINT = 0x014000A6,
1084 CLUSCTL_RESOURCE_GET_REGISTRY_CHECKPOINTS = 0x010000A9,
1085 CLUSCTL_RESOURCE_ADD_CRYPTO_CHECKPOINT = 0x014000AE,
1086 CLUSCTL_RESOURCE_DELETE_CRYPTO_CHECKPOINT = 0x014000B2,
1087 CLUSCTL_RESOURCE_GET_CRYPTO_CHECKPOINTS = 0x010000B5,
1088 CLUSCTL_RESOURCE_UPGRADE_DLL = 0x014000BA,
1089 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_64BIT = 0x014000BE,
1090 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_32BIT = 0x014000C2,
1091 CLUSCTL_RESOURCE_GET_NETWORK_NAME = 0x01000169,
1092 CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS = 0x01000172,
1093 CLUSCTL_RESOURCE_GET_DNS_NAME = 0x01000175,
1094 CLUSCTL_RESOURCE_NETNAME_SET_PWD_INFO = 0x0100017A,
1095 CLUSCTL_RESOURCE_NETNAME_DELETE_CO = 0x0100017E,
1096 CLUSCTL_RESOURCE_NETNAME_VALIDATE_VCO = 0x01000181,
1097 CLUSCTL_RESOURCE_NETNAME_RESET_VCO = 0x01000185,
1098 CLUSCTL_RESOURCE_NETNAME_CREDS_UPDATED = 0x01c0018a,
1099 CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO = 0x01000191,
1100 CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = 0x01000199,
1101 CLUSCTL_RESOURCE_IPADDRESS_RENEW_LEASE = 0x014001BE,
1102 CLUSCTL_RESOURCE_IPADDRESS_RELEASE_LEASE = 0x014001C2,
1103 CLUSCTL_RESOURCE_QUERY_MAINTENANCE_MODE = 0x010001E1,
1104 CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE = 0x014001E6,
1105 CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER = 0x014001EA,
1106 CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX = 0x010001F1,
1107 CLUSCTL_RESOURCE_STORAGE_GET_DIRTY = 0x01000219,
1108 CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS = 0x01000211,
1109 CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO = 0x01000225,
1110 CLUSCTL_RESOURCE_VM_START_MIGRATION = 0x01600004,
1111 CLUSCTL_RESOURCE_VM_CANCEL_MIGRATION = 0x01600008,
1112 CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE = 0x01400296,
1113 CLUSCTL_RESOURCE_ENABLE_SHARED_VOLUME_DIRECTIO = 0x0140028a,
1114 CLUSCTL_RESOURCE_DISABLE_SHARED_VOLUME_DIRECTIO = 0x0140028e,
1115 CLUSCTL_RESOURCE_SET_SHARED_VOLUME_BACKUP_MODE = 0x0140029a,
1116 CLUSCTL_RESOURCE_GET_RELATED_RESOURCE_NAMES = 0x01001fad,
1117 CLUSCTL_RESOURCE_POOL_GET_DRIVE_INFO = 0x010002b5,
1118 CLUSCTL_RESOURCE_CLOUD_WITNESS_UPDATE_TOKEN = 0x014020e6,
1119 CLUSCTL_RESOURCE_NETNAME_CHECK_OU_PERMISSIONS = 0x07002121,
1120 CLUSCTL_RESOURCE_NETNAME_CHECK_AD_STATE = 0x07002125
1121 } clusapi_ResourceControlCode;
1123 WERROR
1124 clusapi_ResourceControl(
1125 [ in ] HRES_RPC hResource,
1126 [ in ] clusapi_ResourceControlCode dwControlCode,
1127 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1128 [ in ] uint32 nInBufferSize,
1129 [ out, size_is(nOutBufferSize),
1130 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1131 [ in ] uint32 nOutBufferSize,
1132 [ out ] uint32 *lpBytesReturned,
1133 [ out ] uint32 *lpcbRequired,
1134 [ out ] WERROR *rpc_status
1137 /*****************/
1138 /* Function 0x4A */
1140 WERROR
1141 clusapi_NodeResourceTypeControl(
1142 [ in ] HCLUSTER_RPC hCluster,
1143 [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
1144 [ in ] HNODE_RPC hNode,
1145 [ in ] uint32 dwControlCode,
1146 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1147 [ in ] uint32 nInBufferSize,
1148 [ out, size_is(nOutBufferSize),
1149 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1150 [ in ] uint32 nOutBufferSize,
1151 [ out ] uint32 *lpBytesReturned,
1152 [ out ] uint32 *lpcbRequired,
1153 [ out ] WERROR *rpc_status
1156 /*****************/
1157 /* Function 0x4B */
1159 typedef [v1_enum] enum {
1160 CLUSCTL_RESOURCE_TYPE_UNKNOWN = 0x02000000,
1161 CLUSCTL_RESOURCE_TYPE_GET_CHARACTERISTICS = 0x02000005,
1162 CLUSCTL_RESOURCE_TYPE_GET_FLAGS = 0x02000009,
1163 CLUSCTL_RESOURCE_TYPE_GET_CLASS_INFO = 0x0200000D,
1164 CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES = 0x02000011,
1165 CLUSCTL_RESOURCE_TYPE_GET_ARB_TIMEOUT = 0x02000015,
1166 CLUSCTL_RESOURCE_TYPE_ENUM_COMMON_PROPERTIES = 0x02000051,
1167 CLUSCTL_RESOURCE_TYPE_GET_RO_COMMON_PROPERTIES = 0x02000055,
1168 CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTIES = 0x02000059,
1169 CLUSCTL_RESOURCE_TYPE_SET_COMMON_PROPERTIES = 0x0240005E,
1170 CLUSCTL_RESOURCE_TYPE_VALIDATE_COMMON_PROPERTIES = 0x02000061,
1171 CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTY_FMTS = 0x02000065,
1172 CLUSCTL_RESOURCE_TYPE_GET_COMMON_RESOURCE_PROPERTY_FMTS = 0x02000069,
1173 CLUSCTL_RESOURCE_TYPE_ENUM_PRIVATE_PROPERTIES = 0x02000079,
1174 CLUSCTL_RESOURCE_TYPE_GET_RO_PRIVATE_PROPERTIES = 0x0200007D,
1175 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES = 0x02000081,
1176 CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES = 0x02400086,
1177 CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES = 0x02000089,
1178 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTY_FMTS = 0x0200008D,
1179 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_RESOURCE_PROPERTY_FMTS= 0x02000091,
1180 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS = 0x02000195,
1181 CLUSCTL_RESOURCE_TYPE_NETNAME_VALIDATE_NETNAME = 0x02000235,
1182 CLUSCTL_RESOURCE_TYPE_VALIDATE_PATH = 0x02000231,
1183 CLUSCTL_RESOURCE_TYPE_GEN_APP_VALIDATE_DIRECTORY = 0x02000239,
1184 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DRIVELETTERS = 0x020001ED,
1185 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX = 0x020001F5,
1186 CLUSCTL_RESOURCE_TYPE_STORAGE_REMAP_DRIVELETTER = 0x02000201,
1187 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID = 0x02000205,
1188 CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE = 0x02000209,
1189 CLUSCTL_RESOURCE_TYPE_STORAGE_RELEASE_OWNERSHIP = 0x0240020E,
1190 CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CSV_FILE = 0x1000229,
1191 CLUSCTL_RESOURCE_TYPE_CLOUD_WITNESS_VALIDATE_CREDENTIALS= 0x020020e1,
1192 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_LOGDISKS = 0x02002149,
1193 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_TARGET_DATADISKS = 0x0200214D,
1194 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_SOURCE_DATADISKS = 0x02002151,
1195 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICA_VOLUMES = 0x02002159,
1196 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_LOG_VOLUME = 0x0200215D,
1197 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICATED_DISKS = 0x02002155,
1198 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_RESOURCE_GROUP = 0x02002161
1199 } clusapi_ResourceTypeControlCode;
1201 WERROR
1202 clusapi_ResourceTypeControl(
1203 [ in ] HCLUSTER_RPC hCluster,
1204 [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
1205 [ in ] clusapi_ResourceTypeControlCode dwControlCode,
1206 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1207 [ in ] uint32 nInBufferSize,
1208 [ out, size_is(nOutBufferSize),
1209 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1210 [ in ] uint32 nOutBufferSize,
1211 [ out ] uint32 *lpBytesReturned,
1212 [ out ] uint32 *lpcbRequired,
1213 [ out ] WERROR *rpc_status
1216 /*****************/
1217 /* Function 0x4C */
1219 WERROR
1220 clusapi_NodeGroupControl(
1221 [ in ] HGROUP_RPC hGroup,
1222 [ in ] HNODE_RPC hNode,
1223 [ in ] uint32 dwControlCode,
1224 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1225 [ in ] uint32 nInBufferSize,
1226 [ out, size_is(nOutBufferSize),
1227 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1228 [ in ] uint32 nOutBufferSize,
1229 [ out ] uint32 *lpBytesReturned,
1230 [ out ] uint32 *lpcbRequired,
1231 [ out ] WERROR *rpc_status
1234 /*****************/
1235 /* Function 0x4D */
1237 typedef [v1_enum] enum {
1238 CLUSCTL_GROUP_UNKNOWN = 0x03000000,
1239 CLUSCTL_GROUP_GET_CHARACTERISTICS = 0x03000005,
1240 CLUSCTL_GROUP_GET_FLAGS = 0x03000009,
1241 CLUSCTL_GROUP_GET_NAME = 0x03000029,
1242 CLUSCTL_GROUP_GET_ID = 0x03000039,
1243 CLUSCTL_GROUP_ENUM_COMMON_PROPERTIES = 0x03000051,
1244 CLUSCTL_GROUP_GET_RO_COMMON_PROPERTIES = 0x03000055,
1245 CLUSCTL_GROUP_GET_COMMON_PROPERTIES = 0x03000059,
1246 CLUSCTL_GROUP_SET_COMMON_PROPERTIES = 0x0340005E,
1247 CLUSCTL_GROUP_VALIDATE_COMMON_PROPERTIES = 0x03000061,
1248 CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS = 0x03000065,
1249 CLUSCTL_GROUP_ENUM_PRIVATE_PROPERTIES = 0x03000079,
1250 CLUSCTL_GROUP_GET_RO_PRIVATE_PROPERTIES = 0x0300007D,
1251 CLUSCTL_GROUP_GET_PRIVATE_PROPERTIES = 0x03000081,
1252 CLUSCTL_GROUP_SET_PRIVATE_PROPERTIES = 0x03400086,
1253 CLUSCTL_GROUP_VALIDATE_PRIVATE_PROPERTIES = 0x03000089
1254 } clusapi_GroupControlCode;
1256 WERROR
1257 clusapi_GroupControl(
1258 [ in ] HGROUP_RPC hGroup,
1259 [ in ] clusapi_GroupControlCode dwControlCode,
1260 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1261 [ in ] uint32 nInBufferSize,
1262 [ out, size_is(nOutBufferSize),
1263 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1264 [ in ] uint32 nOutBufferSize,
1265 [ out ] uint32 *lpBytesReturned,
1266 [ out ] uint32 *lpcbRequired,
1267 [ out ] WERROR *rpc_status
1270 /*****************/
1271 /* Function 0x4E */
1273 WERROR
1274 clusapi_NodeNodeControl(
1275 [ in ] HNODE_RPC hNode,
1276 [ in ] HNODE_RPC hHostNode,
1277 [ in ] uint32 dwControlCode,
1278 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1279 [ in ] uint32 nInBufferSize,
1280 [ out, size_is(nOutBufferSize),
1281 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1282 [ in ] uint32 nOutBufferSize,
1283 [ out ] uint32 *lpBytesReturned,
1284 [ out ] uint32 *lpcbRequired,
1285 [ out ] WERROR *rpc_status
1288 /*****************/
1289 /* Function 0x4F */
1291 typedef [v1_enum] enum {
1292 CLUSCTL_NODE_UNKNOWN = 0x04000000,
1293 CLUSCTL_NODE_GET_CHARACTERISTICS = 0x04000005,
1294 CLUSCTL_NODE_GET_FLAGS = 0x04000009,
1295 CLUSCTL_NODE_GET_NAME = 0x04000029,
1296 CLUSCTL_NODE_GET_ID = 0x04000039,
1297 CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME = 0x04000041,
1298 CLUSCTL_NODE_ENUM_COMMON_PROPERTIES = 0x04000051,
1299 CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES = 0x04000055,
1300 CLUSCTL_NODE_GET_COMMON_PROPERTIES = 0x04000059,
1301 CLUSCTL_NODE_SET_COMMON_PROPERTIES = 0x0440005E,
1302 CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES = 0x04000061,
1303 CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES = 0x04000079,
1304 CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES = 0x0400007D,
1305 CLUSCTL_NODE_GET_PRIVATE_PROPERTIES = 0x04000081,
1306 CLUSCTL_NODE_SET_PRIVATE_PROPERTIES = 0x04400086,
1307 CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES = 0x04000089
1308 } clusapi_NodeControlCode;
1310 WERROR
1311 clusapi_NodeControl(
1312 [ in ] HNODE_RPC hNode,
1313 [ in ] clusapi_NodeControlCode dwControlCode,
1314 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1315 [ in ] uint32 nInBufferSize,
1316 [ out, size_is(nOutBufferSize),
1317 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1318 [ in ] uint32 nOutBufferSize,
1319 [ out ] uint32 *lpBytesReturned,
1320 [ out ] uint32 *lpcbRequired,
1321 [ out ] WERROR *rpc_status
1324 /*****************/
1325 /* Function 0x50 */
1327 WERROR
1328 Opnum80NotUsedOnWire(void);
1330 /*****************/
1331 /* Function 0x51 */
1332 #if 0
1333 HNETWORK_RPC
1334 clusapi_OpenNetwork(
1335 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1336 [ out ] WERROR *Status,
1337 [ out ] WERROR *rpc_status
1339 #else
1340 void
1341 clusapi_OpenNetwork(
1342 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1343 [ out ] WERROR *Status,
1344 [ out ] WERROR *rpc_status,
1345 [ out ] HNETWORK_RPC *hNetwork
1347 #endif
1348 /*****************/
1349 /* Function 0x52 */
1351 WERROR
1352 clusapi_CloseNetwork(
1353 [ in, out ] HNETWORK_RPC *Network
1356 /*****************/
1357 /* Function 0x53 */
1359 typedef [v1_enum] enum {
1360 ClusterNetworkUnavailable = 0x00000000,
1361 ClusterNetworkDown = 0x00000001,
1362 ClusterNetworkPartitioned = 0x00000002,
1363 ClusterNetworkUp = 0x00000003,
1364 ClusterNetworkStateUnknown = 0xFFFFFFFF
1365 } clusapi_ClusterNetworkState;
1367 WERROR
1368 clusapi_GetNetworkState(
1369 [ in ] HNETWORK_RPC hNetwork,
1370 [ out ] clusapi_ClusterNetworkState *State,
1371 [ out ] WERROR *rpc_status
1374 /*****************/
1375 /* Function 0x54 */
1377 WERROR
1378 clusapi_SetNetworkName(
1379 [ in ] HNETWORK_RPC hNetwork,
1380 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1381 [ out ] WERROR *rpc_status
1384 /*****************/
1385 /* Function 0x55 */
1387 WERROR
1388 clusapi_CreateNetworkEnum(
1389 [ in ] HNETWORK_RPC hNetwork,
1390 [ in ] uint32 dwType,
1391 [ out ] ENUM_LIST **ReturnEnum,
1392 [ out ] WERROR *rpc_status
1395 /*****************/
1396 /* Function 0x56 */
1398 WERROR
1399 clusapi_GetNetworkId(
1400 [ in ] HNETWORK_RPC hNetwork,
1401 [ out, string ] [charset(UTF16)] uint16 **pGuid,
1402 [ out ] WERROR *rpc_status
1405 /*****************/
1406 /* Function 0x57 */
1408 WERROR
1409 clusapi_SetNetworkPriorityOrder(
1410 [ in, range(0, 1000)] uint32 NetworkCount,
1411 [ in, string, size_is(NetworkCount) ] [charset(UTF16)] uint16 NetworkIdList[*],
1412 [ out ] WERROR *rpc_status
1415 /*****************/
1416 /* Function 0x58 */
1418 WERROR
1419 clusapi_NodeNetworkControl(
1420 [ in ] HNETWORK_RPC hNetwork,
1421 [ in ] HNODE_RPC hNode,
1422 [ in ] uint32 dwControlCode,
1423 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1424 [ in ] uint32 nInBufferSize,
1425 [ out, size_is(nOutBufferSize),
1426 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1427 [ in ] uint32 nOutBufferSize,
1428 [ out ] uint32 *lpBytesReturned,
1429 [ out ] uint32 *lpcbRequired,
1430 [ out ] WERROR *rpc_status
1433 /*****************/
1434 /* Function 0x59 */
1436 WERROR
1437 clusapi_NetworkControl(
1438 [ in ] HNETWORK_RPC hNetwork,
1439 [ in ] uint32 dwControlCode,
1440 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1441 [ in ] uint32 nInBufferSize,
1442 [ out, size_is(nOutBufferSize),
1443 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1444 [ in ] uint32 nOutBufferSize,
1445 [ out ] uint32 *lpBytesReturned,
1446 [ out ] uint32 *lpcbRequired,
1447 [ out ] WERROR *rpc_status
1450 /*****************/
1451 /* Function 0x5A */
1453 WERROR
1454 clusapi_AddNotifyNetwork(
1455 [ in ] HNOTIFY_RPC hNotify,
1456 [ in ] HNETWORK_RPC hNetwork,
1457 [ in ] uint32 dwFilter,
1458 [ in ] uint32 dwNotifyKey,
1459 [ out ] uint32 *dwStateSequence,
1460 [ out ] WERROR *rpc_status
1463 /*****************/
1464 /* Function 0x5B */
1466 WERROR
1467 clusapi_ReAddNotifyNetwork(
1468 [ in ] HNOTIFY_RPC hNotify,
1469 [ in ] HNETWORK_RPC hNetwork,
1470 [ in ] uint32 dwFilter,
1471 [ in ] uint32 dwNotifyKey,
1472 [ in ] uint32 StateSequence,
1473 [ out ] WERROR *rpc_status
1476 /*****************/
1477 /* Function 0x5C */
1478 #if 0
1479 HNETINTERFACE_RPC
1480 clusapi_OpenNetInterface(
1481 [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1482 [ out ] WERROR *Status,
1483 [ out ] WERROR *rpc_status
1485 #else
1486 void
1487 clusapi_OpenNetInterface(
1488 [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1489 [ out ] WERROR *Status,
1490 [ out ] WERROR *rpc_status,
1491 [ out ] HNETINTERFACE_RPC *hNetInterface
1493 #endif
1494 /*****************/
1495 /* Function 0x5D */
1497 WERROR
1498 clusapi_CloseNetInterface(
1499 [ in, out ] HNETINTERFACE_RPC *NetInterface
1502 /*****************/
1503 /* Function 0x5E */
1505 typedef [v1_enum] enum {
1506 ClusterNetInterfaceFailed = 0x00000000,
1507 ClusterNetInterfaceUnreachable = 0x00000001,
1508 ClusterNetInterfaceUnavailable = 0x00000002,
1509 ClusterNetInterfaceUp = 0x00000003,
1510 ClusterNetInterfaceStateUnknown = 0xFFFFFFFF
1511 } clusapi_ClusterNetInterfaceState;
1513 WERROR
1514 clusapi_GetNetInterfaceState(
1515 [ in ] HNETINTERFACE_RPC hNetInterface,
1516 [ out ] clusapi_ClusterNetInterfaceState *State,
1517 [ out ] WERROR *rpc_status
1520 /*****************/
1521 /* Function 0x5F */
1523 WERROR
1524 clusapi_GetNetInterface(
1525 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1526 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1527 [ out, string ] [charset(UTF16)] uint16 **lppszInterfaceName,
1528 [ out ] WERROR *rpc_status
1531 /*****************/
1532 /* Function 0x60 */
1534 WERROR
1535 clusapi_GetNetInterfaceId(
1536 [ in ] HNETINTERFACE_RPC hNetInterface,
1537 [ out, string ] [charset(UTF16)] uint16 **pGuid,
1538 [ out ] WERROR *rpc_status
1541 /*****************/
1542 /* Function 0x61 */
1544 WERROR
1545 clusapi_NodeNetInterfaceControl(
1546 [ in ] HNETINTERFACE_RPC hNetInterface,
1547 [ in ] HNODE_RPC hNode,
1548 [ in ] uint32 dwControlCode,
1549 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1550 [ in ] uint32 nInBufferSize,
1551 [ out, size_is(nOutBufferSize),
1552 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1553 [ in ] uint32 nOutBufferSize,
1554 [ out ] uint32 *lpBytesReturned,
1555 [ out ] uint32 *lpcbRequired,
1556 [ out ] WERROR *rpc_status
1559 /*****************/
1560 /* Function 0x62 */
1562 WERROR
1563 clusapi_NetInterfaceControl(
1564 [ in ] HNETINTERFACE_RPC hNetInterface,
1565 [ in ] uint32 dwControlCode,
1566 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1567 [ in ] uint32 nInBufferSize,
1568 [ out, size_is(nOutBufferSize),
1569 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1570 [ in ] uint32 nOutBufferSize,
1571 [ out ] uint32 *lpBytesReturned,
1572 [ out ] uint32 *lpcbRequired,
1573 [ out ] WERROR *rpc_status
1576 /*****************/
1577 /* Function 0x63 */
1579 WERROR
1580 clusapi_AddNotifyNetInterface(
1581 [ in ] HNOTIFY_RPC hNotify,
1582 [ in ] HNETINTERFACE_RPC hNetInterface,
1583 [ in ] uint32 dwFilter,
1584 [ in ] uint32 dwNotifyKey,
1585 [ out ] uint32 *dwStateSequence,
1586 [ out ] WERROR *rpc_status
1589 /*****************/
1590 /* Function 0x64 */
1592 WERROR
1593 clusapi_ReAddNotifyNetInterface(
1594 [ in ] HNOTIFY_RPC hNotify,
1595 [ in ] HNETINTERFACE_RPC hNetInterface,
1596 [ in ] uint32 dwFilter,
1597 [ in ] uint32 dwNotifyKey,
1598 [ in ] uint32 StateSequence,
1599 [ out ] WERROR *rpc_status
1602 /*****************/
1603 /* Function 0x65 */
1605 WERROR
1606 clusapi_CreateNodeEnum(
1607 [ in ] HNODE_RPC hNode,
1608 [ in ] uint32 dwType,
1609 [ out ] ENUM_LIST **ReturnEnum,
1610 [ out ] WERROR *rpc_status
1613 /*****************/
1614 /* Function 0x66 */
1616 WERROR
1617 clusapi_GetClusterVersion2(
1618 [ out ] uint16 *lpwMajorVersion,
1619 [ out ] uint16 *lpwMinorVersion,
1620 [ out ] uint16 *lpwBuildNumber,
1621 [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
1622 [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion,
1623 [ out ] CLUSTER_OPERATIONAL_VERSION_INFO **ppClusterOpVerInfo,
1624 [ out ] WERROR *rpc_status
1627 /*****************/
1628 /* Function 0x67 */
1630 typedef [bitmap32bit] bitmap {
1631 CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001,
1632 CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES = 0x00000002
1633 } ClusterResTypeEnumType;
1635 WERROR
1636 clusapi_CreateResTypeEnum(
1637 [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
1638 [ in ] ClusterResTypeEnumType dwType,
1639 [ out ] ENUM_LIST **ReturnEnum,
1640 [ out ] WERROR *rpc_status
1643 /*****************/
1644 /* Function 0x68 */
1646 WERROR
1647 clusapi_BackupClusterDatabase(
1648 [ in, string ] [charset(UTF16)] uint16 *lpszPathName,
1649 [ out ] WERROR *rpc_status
1652 /*****************/
1653 /* Function 0x69 */
1655 WERROR
1656 clusapi_NodeClusterControl(
1657 [ in ] HCLUSTER_RPC hCluster,
1658 [ in ] HNODE_RPC hHostNode,
1659 [ in ] uint32 dwControlCode,
1660 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1661 [ in ] uint32 nInBufferSize,
1662 [ out, size_is(nOutBufferSize),
1663 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1664 [ in ] uint32 nOutBufferSize,
1665 [ out ] uint32 *lpBytesReturned,
1666 [ out ] uint32 *lpcbRequired,
1667 [ out ] WERROR *rpc_status
1670 /*****************/
1671 /* Function 0x6A */
1673 typedef [v1_enum] enum {
1674 CLUSCTL_CLUSTER_UNKNOWN = 0x07000000,
1675 CLUSCTL_CLUSTER_GET_FQDN = 0x0700003D,
1676 CLUSCTL_CLUSTER_CHECK_VOTER_EVICT = 0x07000045,
1677 CLUSCTL_CLUSTER_CHECK_VOTER_DOWN = 0x07000049,
1678 CLUSCTL_CLUSTER_SHUTDOWN = 0x0700004D,
1679 CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES = 0x07000051,
1680 CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES = 0x07000055,
1681 CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES = 0x07000059,
1682 CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES = 0x0740005E,
1683 CLUSCTL_CLUSTER_VALIDATE_COMMON_PROPERTIES = 0x07000061,
1684 CLUSCTL_CLUSTER_GET_COMMON_PROPERTY_FMTS = 0x07000065,
1685 CLUSCTL_CLUSTER_ENUM_PRIVATE_PROPERTIES = 0x07000079,
1686 CLUSCTL_CLUSTER_GET_RO_PRIVATE_PROPERTIES = 0x0700007D,
1687 CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTIES = 0x07000081,
1688 CLUSCTL_CLUSTER_SET_PRIVATE_PROPERTIES = 0x07400086,
1689 CLUSCTL_CLUSTER_VALIDATE_PRIVATE_PROPERTIES = 0x07000089,
1690 CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID = 0x07000291,
1691 CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION = 0x074000ce,
1692 CLUSCTL_CLUSTER_CLEAR_UPGRADE_IN_PROGRESS = 0x074000d2,
1693 CLUSCTL_CLUSTER_IS_READY_FOR_UPGRADE = 0x070000d5
1694 } clusapi_ClusterControlCode;
1696 typedef [v1_enum] enum {
1697 CLUSPROP_SYNTAX_ENDMARK = 0x00000000,
1698 CLUSPROP_SYNTAX_NAME = 0x00040003,
1699 CLUSPROP_SYNTAX_RESCLASS = 0x00020002,
1700 CLUSPROP_SYNTAX_LIST_VALUE_SZ = 0x00010003,
1701 CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = 0x00010004,
1702 CLUSPROP_SYNTAX_LIST_VALUE_DWORD = 0x00010002,
1703 CLUSPROP_SYNTAX_LIST_VALUE_BINARY = 0x00010001,
1704 CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = 0x00010005,
1705 CLUSPROP_SYNTAX_LIST_VALUE_LONG = 0x00010007,
1706 CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = 0x00010008,
1707 CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = 0x00010009,
1708 CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = 0x0001000a,
1709 CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = 0x00010006,
1710 CLUSPROP_SYNTAX_LIST_VALUE_WORD = 0x0001000b,
1711 CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = 0x0001000c,
1712 CLUSPROP_SYNTAX_DISK_SIGNATURE = 0x00050002,
1713 CLUSPROP_SYNTAX_SCSI_ADDRESS = 0x00060002,
1714 CLUSPROP_SYNTAX_DISK_NUMBER = 0x00070002,
1715 CLUSPROP_SYNTAX_PARTITION_INFO = 0x00080001,
1716 CLUSPROP_SYNTAX_DISK_SERIALNUMBER = 0x000a0003,
1717 CLUSPROP_SYNTAX_DISK_GUID = 0x000b0003,
1718 CLUSPROP_SYNTAX_DISK_SIZE = 0x000c0006,
1719 CLUSPROP_SYNTAX_PARTITION_INFO_EX = 0x000d0001
1720 } CLUSTER_PROPERTY_SYNTAX;
1722 typedef struct {
1723 CLUSTER_PROPERTY_SYNTAX Syntax;
1724 uint32 Size;
1725 [subcontext(0),subcontext_size(Size)] [flag(NDR_REMAINING)] DATA_BLOB Buffer;
1726 [flag(NDR_ALIGN4)] DATA_BLOB Padding;
1727 } clusapi_propertyValues;
1729 typedef struct {
1730 [value(CLUSPROP_SYNTAX_NAME)] CLUSTER_PROPERTY_SYNTAX syntax_name;
1731 [value(strlen_m_term(buffer)*2)] uint32 size;
1732 nstring buffer;
1733 [flag(NDR_ALIGN2)] DATA_BLOB padding;
1734 clusapi_propertyValues PropertyValues;
1735 [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
1736 } clusapi_propertyValue;
1738 typedef [public] struct {
1739 uint32 propertyCount;
1740 clusapi_propertyValue propertyValues[propertyCount];
1741 [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
1742 } clusapi_PROPERTY_LIST;
1744 WERROR
1745 clusapi_ClusterControl(
1746 [ in ] HCLUSTER_RPC hCluster,
1747 [ in ] clusapi_ClusterControlCode dwControlCode,
1748 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1749 [ in ] uint32 nInBufferSize,
1750 [ out, size_is(nOutBufferSize),
1751 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1752 [ in ] uint32 nOutBufferSize,
1753 [ out ] uint32 *lpBytesReturned,
1754 [ out ] uint32 *lpcbRequired,
1755 [ out ] WERROR *rpc_status
1758 /*****************/
1759 /* Function 0x6B */
1761 WERROR
1762 clusapi_UnblockGetNotifyCall(
1763 [ in ] HNOTIFY_RPC hNotify
1766 /*****************/
1767 /* Function 0x6C */
1769 WERROR
1770 clusapi_SetServiceAccountPassword(
1771 [ in, string ] [charset(UTF16)] uint16 *lpszNewPassword,
1772 [ in ] IDL_CLUSTER_SET_PASSWORD_FLAGS dwFlags,
1773 [ out, size_is(ReturnStatusBufferSize), length_is(*SizeReturned) ]
1774 IDL_CLUSTER_SET_PASSWORD_STATUS ReturnStatusBufferPtr[*],
1775 [ in, range(0, (64 * 1024)) ] uint32 ReturnStatusBufferSize,
1776 [ out ] uint32 *SizeReturned,
1777 [ out ] uint32 *ExpectedBufferSize
1780 /*****************/
1781 /* Function 0x6D */
1783 WERROR
1784 clusapi_SetResourceDependencyExpression(
1785 [ in ] HRES_RPC hResource,
1786 [ in, string, unique ] [charset(UTF16)] uint16 *lpszDependencyExpression,
1787 [ out ] WERROR *rpc_status
1790 /*****************/
1791 /* Function 0x6E */
1793 WERROR
1794 clusapi_GetResourceDependencyExpression(
1795 [ in ] HRES_RPC hResource,
1796 [ out, string ] [charset(UTF16)] uint16 **lpszDependencyExpression,
1797 [ out ] WERROR *rpc_status
1800 /*****************/
1801 /* Function 0x6F */
1803 WERROR
1804 Opnum111NotUsedOnWire(void);
1806 /*****************/
1807 /* Function 0x70 */
1809 WERROR
1810 clusapi_GetResourceNetworkName(
1811 [ in ] HRES_RPC hResource,
1812 [ out, string ] [charset(UTF16)] uint16 **lpszName,
1813 [ out ] WERROR *rpc_status
1816 /*****************/
1817 /* Function 0x71 */
1819 WERROR
1820 clusapi_ExecuteBatch(
1821 [ in ] HKEY_RPC hKey,
1822 [ in ] uint32 cbData,
1823 [ in, size_is(cbData)] uint8 *lpData,
1824 [ out ] int *pdwFailedCommand,
1825 [ out ] WERROR *rpc_status
1828 /*****************/
1829 /* Function 0x72 */
1831 WERROR
1832 clusapi_CreateBatchPort(
1833 [ in ] HKEY_RPC hKey,
1834 [ out ] HBATCH_PORT_RPC *phBatchPort,
1835 [ out ] WERROR *rpc_status
1838 /*****************/
1839 /* Function 0x73 */
1841 WERROR
1842 clusapi_GetBatchNotification(
1843 [ in ] HBATCH_PORT_RPC hBatchNotify,
1844 [ out ] uint32 *cbData,
1845 [ out, size_is(,*cbData) ] uint8 ** lpData
1848 /*****************/
1849 /* Function 0x74 */
1851 WERROR
1852 clusapi_CloseBatchPort(
1853 [ in, out ] HBATCH_PORT_RPC *phBatchPort
1856 /*****************/
1857 /* Function 0x75 */
1859 typedef [bitmap32bit] bitmap {
1860 CLUSAPI_READ_ACCESS = 0x00000001,
1861 CLUSAPI_CHANGE_ACCESS = 0x00000002,
1862 CLUSAPI_GENERIC_READ = 0x80000000,
1863 CLUSAPI_GENERIC_WRITE = 0x40000000,
1864 CLUSAPI_GENERIC_EXECUTE = 0x20000000,
1865 CLUSAPI_GENERIC_ALL = 0x10000000,
1866 CLUSAPI_MAXIMUM_ALLOWED = 0x02000000
1867 } clusapi_DesiredAccessMask;
1869 #if 0
1870 HCLUSTER_RPC
1871 clusapi_OpenClusterEx(
1872 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1873 [ out ] uint32 *lpdwGrantedAccess,
1874 [ out ] WERROR *Status
1876 #else
1877 void
1878 clusapi_OpenClusterEx(
1879 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1880 [ out ] uint32 *lpdwGrantedAccess,
1881 [ out ] WERROR *Status,
1882 [ out ] HCLUSTER_RPC *hCluster
1884 #endif
1886 /*****************/
1887 /* Function 0x76 */
1888 #if 0
1889 HNODE_RPC
1890 clusapi_OpenNodeEx(
1891 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1892 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1893 [ out ] uint32 *lpdwGrantedAccess,
1894 [ out ] WERROR *Status,
1895 [ out ] WERROR *rpc_status
1897 #else
1898 void
1899 clusapi_OpenNodeEx(
1900 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1901 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1902 [ out ] uint32 *lpdwGrantedAccess,
1903 [ out ] WERROR *Status,
1904 [ out ] WERROR *rpc_status,
1905 [ out ] HNODE_RPC *hNode
1907 #endif
1908 /*****************/
1909 /* Function 0x77 */
1910 #if 0
1911 HGROUP_RPC
1912 clusapi_OpenGroupEx(
1913 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
1914 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1915 [ out ] uint32 *lpdwGrantedAccess,
1916 [ out ] WERROR *Status,
1917 [ out ] WERROR *rpc_status
1919 #else
1920 void
1921 clusapi_OpenGroupEx(
1922 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
1923 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1924 [ out ] uint32 *lpdwGrantedAccess,
1925 [ out ] WERROR *Status,
1926 [ out ] WERROR *rpc_status,
1927 [ out ] HGROUP_RPC *hGroup
1929 #endif
1930 /*****************/
1931 /* Function 0x78 */
1932 #if 0
1933 HRES_RPC
1934 clusapi_OpenResourceEx(
1935 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
1936 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1937 [ out ] uint32 *lpdwGrantedAccess,
1938 [ out ] WERROR *Status,
1939 [ out ] WERROR *rpc_status
1941 #else
1942 void
1943 clusapi_OpenResourceEx(
1944 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
1945 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1946 [ out ] uint32 *lpdwGrantedAccess,
1947 [ out ] WERROR *Status,
1948 [ out ] WERROR *rpc_status,
1949 [ out ] HRES_RPC *hResource
1951 #endif
1952 /*****************/
1953 /* Function 0x79 */
1954 #if 0
1955 HNETWORK_RPC
1956 clusapi_OpenNetworkEx(
1957 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1958 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1959 [ out ] uint32 *lpdwGrantedAccess,
1960 [ out ] WERROR *Status,
1961 [ out ] WERROR *rpc_status
1963 #else
1964 void
1965 clusapi_OpenNetworkEx(
1966 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1967 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1968 [ out ] uint32 *lpdwGrantedAccess,
1969 [ out ] WERROR *Status,
1970 [ out ] WERROR *rpc_status,
1971 [ out ] HNETWORK_RPC *hNetwork
1973 #endif
1974 /*****************/
1975 /* Function 0x7A */
1976 #if 0
1977 HNETINTERFACE_RPC
1978 clusapi_OpenNetInterfaceEx(
1979 [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1980 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1981 [ out ] uint32 *lpdwGrantedAccess,
1982 [ out ] WERROR *Status,
1983 [ out ] WERROR *rpc_status
1985 #else
1986 void
1987 clusapi_OpenNetInterfaceEx(
1988 [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1989 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1990 [ out ] uint32 *lpdwGrantedAccess,
1991 [ out ] WERROR *Status,
1992 [ out ] WERROR *rpc_status,
1993 [ out ] HNETINTERFACE_RPC *hNetInterface
1995 #endif
1996 /*****************/
1997 /* Function 0x7B */
1999 WERROR
2000 clusapi_ChangeCsvState(
2001 [ in ] HRES_RPC hResource,
2002 [ in ] uint32 dwState,
2003 [ out ] WERROR *rpc_status
2006 /*****************/
2007 /* Function 0x7C */
2009 WERROR
2010 clusapi_CreateNodeEnumEx(
2011 [in] HNODE_RPC hNode,
2012 [in] uint32 dwType,
2013 [in] uint32 dwOptions,
2014 [out] ENUM_LIST **ReturnIdEnum,
2015 [out] ENUM_LIST **ReturnNameEnum,
2016 [out] WERROR* rpc_status
2019 /*****************/
2020 /* Function 0x7D */
2022 WERROR
2023 clusapi_CreateEnumEx(
2024 [in] HCLUSTER_RPC hCluster,
2025 [in] ClusterEnumType dwType,
2026 [in] uint32 dwOptions,
2027 [out] ENUM_LIST **ReturnIdEnum,
2028 [out] ENUM_LIST **ReturnNameEnum,
2029 [out] WERROR* rpc_status
2032 /*****************/
2033 /* Function 0x7E */
2035 WERROR
2036 clusapi_PauseNodeEx(
2037 [ in ] HNODE_RPC hNode,
2038 [ in ] boolean8 bDrainNode,
2039 [ in ] uint32 dwPauseFlags,
2040 [ out ] WERROR *rpc_status
2043 /*****************/
2044 /* Function 0x7F */
2046 WERROR
2047 clusapi_PauseNodeWithDrainTarget(
2048 [ in ] HNODE_RPC hNode,
2049 [ in ] uint32 dwPauseFlags,
2050 [ in ] HNODE_RPC hNodeDrainTarget,
2051 [ out ] WERROR *rpc_status
2054 /*****************/
2055 /* Function 0x80 */
2057 WERROR
2058 clusapi_ResumeNodeEx(
2059 [ in ] HNODE_RPC hNode,
2060 [ in ] uint32 dwResumeFailbackType,
2061 [ in ] uint32 dwResumeFlagsReserved,
2062 [ out ] WERROR *rpc_status
2065 /*****************/
2066 /* Function 0x81 */
2067 #if 0
2068 HGROUP_RPC
2069 clusapi_CreateGroupEx(
2070 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
2071 [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
2072 [ out ] WERROR *Status,
2073 [ out ] WERROR *rpc_status
2075 #else
2076 void
2077 clusapi_CreateGroupEx(
2078 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
2079 [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
2080 [ out ] WERROR *Status,
2081 [ out ] WERROR *rpc_status,
2082 [ out ] HGROUP_RPC *hGroup
2084 #endif
2085 /*****************/
2086 /* Function 0x82 */
2088 WERROR
2089 clusapi_OnlineGroupEx(
2090 [ in ] HGROUP_RPC hGroup,
2091 [ in ] uint32 dwOnlineFlags,
2092 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2093 [ in ] uint32 cbInBufferSize,
2094 [ out ] WERROR *rpc_status
2097 /*****************/
2098 /* Function 0x83 */
2100 WERROR
2101 clusapi_OfflineGroupEx(
2102 [ in ] HGROUP_RPC hGroup,
2103 [ in ] uint32 dwOfflineFlags,
2104 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2105 [ in ] uint32 cbInBufferSize,
2106 [ out ] WERROR *rpc_status
2109 /*****************/
2110 /* Function 0x84 */
2112 WERROR
2113 clusapi_MoveGroupEx(
2114 [ in ] HGROUP_RPC hGroup,
2115 [ in ] uint32 dwMoveFlags,
2116 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2117 [ in ] uint32 cbInBufferSize,
2118 [ out ] WERROR *rpc_status
2121 /*****************/
2122 /* Function 0x85 */
2124 WERROR
2125 clusapi_MoveGroupToNodeEx(
2126 [ in ] HGROUP_RPC hGroup,
2127 [ in ] HNODE_RPC hNode,
2128 [ in ] uint32 dwMoveFlags,
2129 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2130 [ in ] uint32 cbInBufferSize,
2131 [ out ] WERROR *rpc_status
2134 /*****************/
2135 /* Function 0x86 */
2137 WERROR
2138 clusapi_CancelClusterGroupOperation(
2139 [ in ] HGROUP_RPC hGroup,
2140 [ in ] uint32 dwCancelFlags,
2141 [ out ] WERROR *rpc_status
2144 /*****************/
2145 /* Function 0x87 */
2147 WERROR
2148 clusapi_OnlineResourceEx(
2149 [ in ] HRES_RPC hResource,
2150 [ in ] uint32 dwOnlineFlags,
2151 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2152 [ in ] uint32 cbInBufferSize,
2153 [ out ] WERROR *rpc_status
2156 /*****************/
2157 /* Function 0x88 */
2159 WERROR
2160 clusapi_OfflineResourceEx(
2161 [ in ] HRES_RPC hResource,
2162 [ in ] uint32 dwOfflineFlags,
2163 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2164 [ in ] uint32 cbInBufferSize,
2165 [ out ] WERROR *rpc_status
2168 #define HGENERIC_RPC policy_handle
2169 #if 0
2170 typedef [context_handle] void *HGENERIC_RPC;
2171 #endif
2173 typedef struct {
2174 uint32 dwObjectType; /* really of type CLUSTER_OBJECT_TYPE_RPC */
2175 hyper FilterFlags;
2176 } NOTIFY_FILTER_AND_TYPE_RPC;
2178 typedef struct {
2179 NOTIFY_FILTER_AND_TYPE_RPC FilterAndType;
2180 [ size_is(dwBufferSize ) ] uint8* buffer;
2181 uint32 dwBufferSize;
2182 [string] [charset(UTF16)] uint16 *ObjectId;
2183 [string] [charset(UTF16)] uint16 *ParentId;
2184 [string] [charset(UTF16)] uint16 *Name;
2185 [string] [charset(UTF16)] uint16 *Type;
2186 } NOTIFICATION_DATA_RPC;
2188 typedef struct {
2189 uint32 *dwNotifyKey;
2190 NOTIFICATION_DATA_RPC NotificationData;
2191 } NOTIFICATION_RPC;
2193 /*****************/
2194 /* Function 0x89 */
2197 * Notify interface V2 functions
2199 #if 0
2200 HNOTIFY_RPC
2201 clusapi_CreateNotifyV2(
2202 [ out ] WERROR *rpc_error,
2203 [ out ] WERROR *rpc_status
2205 #else
2206 void
2207 clusapi_CreateNotifyV2(
2208 [ out ] WERROR *rpc_error,
2209 [ out ] WERROR *rpc_status,
2210 [ out ] HNOTIFY_RPC *hNotify
2213 #endif
2214 /*****************/
2215 /* Function 0x8A */
2217 WERROR
2218 clusapi_AddNotifyV2(
2219 [ in ] HNOTIFY_RPC hNotify,
2220 [ in ] HGENERIC_RPC hObject,
2221 [ in ] NOTIFY_FILTER_AND_TYPE_RPC filter,
2222 [ in ] uint32 dwNotifyKey,
2223 [ in ] uint32 dwVersion,
2224 [ in ] boolean8 isTargetedAtObject,
2225 [ out ] WERROR *rpc_status
2228 /*****************/
2229 /* Function 0x8B */
2231 WERROR
2232 clusapi_GetNotifyV2(
2233 [ in ] HNOTIFY_RPC hNotify,
2234 [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_RPC **Notifications,
2235 [ out ] uint32 *dwNumNotifications
2238 /*****************/
2239 /* Function 0x8C */
2241 WERROR
2242 clusapi_QueryAllValues(
2243 [ in ] HKEY_RPC hKey,
2244 [ out ] uint32 *pcbData,
2245 [ out, size_is(1, *pcbData) ] uint8 ** ppData,
2246 [ out ] WERROR *rpc_status
2249 typedef struct {
2250 uint32 DiskIdType;
2251 uint8 DiskIdBlob[16];
2252 } CLUSTER_DISKID;
2254 /*****************/
2255 /* Function 0x8D */
2257 WERROR
2258 clusapi_StmFindDisk(
2259 [ in ] HCLUSTER_RPC hCluster,
2260 [ in ] uint32 dwFlags,
2261 [ in, out, unique ] CLUSTER_DISKID *pDiskId,
2262 [ in, size_is(uniqueIdSize), unique ] uint8 *pUniqueId,
2263 [ in ] uint32 uniqueIdSize,
2264 [ out, ref, string ] [charset(UTF16)] uint16 **ppszDeviceName,
2265 [ out ] WERROR *rpc_status
2268 typedef struct{
2269 [string] [charset(UTF16)] uint16 *pszNodeName;
2270 HRESULT ResultCode;
2271 uint32 ResultSize;
2272 [unique, size_is(ResultSize)] uint8 *pResultData;
2273 } CLUSTER_MRR_NODE_RESPONSE;
2275 typedef struct {
2276 uint32 NodeCount;
2277 [size_is(NodeCount)] CLUSTER_MRR_NODE_RESPONSE *pNodes;
2278 } CLUSTER_MRR_RESPONSE;
2280 /*****************/
2281 /* Function 0x8E */
2283 WERROR
2284 clusapi_ClusterMrr(
2285 [ in ] HCLUSTER_RPC hCluster,
2286 [ in ] boolean8 fExcludeSelf,
2287 [ in ] hyper nodeSet,
2288 [ in ] uint32 dwTimeout,
2289 [ in ] uint32 dwComponent,
2290 [ in ] uint32 dwControlCode,
2291 [ in ] uint32 inSize,
2292 [ in, unique, size_is(inSize) ] uint8 *pInData,
2293 [ out, ref, size_is(1, 1) ] CLUSTER_MRR_RESPONSE **ppInfo,
2294 [ out ] WERROR *rpc_status
2297 /*****************/
2298 /* Function 0x8F */
2300 WERROR
2301 clusapi_CreateGroupEnum(
2302 [ in ] HCLUSTER_RPC hCluster,
2303 [ in, unique, size_is(cbProperties)] uint8* pProperties,
2304 [ in ] uint32 cbProperties,
2305 [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
2306 [ in ] uint32 cbRoProperties,
2307 [ out ] GROUP_ENUM_LIST **ppResultList,
2308 [ out ] WERROR *rpc_status
2311 /*****************/
2312 /* Function 0x90 */
2314 WERROR
2315 clusapi_CreateResourceEnum(
2316 [ in ] HCLUSTER_RPC hCluster,
2317 [ in, unique, size_is(cbProperties)] uint8* pProperties,
2318 [ in ] uint32 cbProperties,
2319 [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
2320 [ in ] uint32 cbRoProperties,
2321 [ out ] RESOURCE_ENUM_LIST **ppResultList,
2322 [ out ] WERROR *rpc_status
2325 /*****************/
2326 /* Function 0x91 */
2328 WERROR
2329 clusapi_ExecuteReadBatch(
2330 [ in ] HKEY_RPC hKey,
2331 [ in ] uint32 cbInData,
2332 [ in, size_is(cbInData)] uint8 *lpInData,
2333 [ out ] uint32 *cbOutData,
2334 [ out, size_is(,*cbOutData) ] uint8 ** lpOutData,
2335 [ out ] WERROR *rpc_status
2338 /*****************/
2339 /* Function 0x92 */
2341 WERROR
2342 clusapi_RestartResource(
2343 [ in ] HRES_RPC hResource,
2344 [ in ] uint32 dwFlags,
2345 [ out ] WERROR *rpc_status
2348 typedef struct {
2349 uint32 dwNotifyKey;
2350 uint32 dwFilter;
2351 [string] [charset(UTF16)] uint16 *Name;
2352 } NOTIFICATION_DATA_ASYNC_RPC;
2354 /*****************/
2355 /* Function 0x93 */
2357 WERROR
2358 clusapi_GetNotifyAsync(
2359 [ in ] HNOTIFY_RPC hNotify,
2360 [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_DATA_ASYNC_RPC **Notifications,
2361 [ out ] uint32 *dwNumNotifications
2364 typedef enum {
2365 DiskIdSignature = 0x00000001,
2366 DiskIdGuid = 0x00000002,
2367 DiskIdUnKnown = 0x00001388
2368 } CLUSDSK_DISKID_ENUM;
2370 #if 0
2371 typedef struct {
2372 CLUSDSK_DISKID_ENUM DiskIdType;
2373 [switch_is(DiskIdType)] union {
2374 [case(DiskIdSignature)] uint32 DiskSignature;
2375 [case(DiskIdGuid)] GUID DiskGuid;
2377 } CLUSDSK_DISKID;
2378 #endif
2379 typedef enum {
2380 CLUSPROP_TYPE_ENDMARK = 0x0000,
2381 CLUSPROP_TYPE_LIST_VALUE = 0x0001,
2382 CLUSPROP_TYPE_RESCLASS = 0x0002,
2383 CLUSPROP_TYPE_NAME = 0x0004,
2384 CLUSPROP_TYPE_SIGNATURE = 0x0005,
2385 CLUSPROP_TYPE_SCSIADDRESS = 0x0006,
2386 CLUSPROP_TYPE_DISK_NUMBER = 0x0007,
2387 CLUSPROP_TYPE_PARTITION_INFO = 0x0008,
2388 CLUSPROP_TYPE_DISK_SERIALNUMBER = 0x000a,
2389 CLUSPROP_TYPE_DISK_GUID = 0x000b,
2390 CLUSPROP_TYPE_DISK_SIZE = 0x000c,
2391 CLUSPROP_TYPE_PARTITION_INFO_EX = 0x000d
2392 } CLUSTER_PROPERTY_TYPE;
2394 typedef enum {
2395 CLUSPROP_FORMAT_UNKNOWN = 0x0000,
2396 CLUSPROP_FORMAT_BINARY = 0x0001,
2397 CLUSPROP_FORMAT_DWORD = 0x0002,
2398 CLUSPROP_FORMAT_SZ = 0x0003,
2399 CLUSPROP_FORMAT_EXPAND_SZ = 0x0004,
2400 CLUSPROP_FORMAT_MULTI_SZ = 0x0005,
2401 CLUSPROP_FORMAT_ULARGE_INTEGER = 0x0006,
2402 CLUSPROP_FORMAT_LONG = 0x0007,
2403 CLUSPROP_FORMAT_EXPANDED_SZ = 0x0008,
2404 CLUSPROP_FORMAT_SECURITY_DESCRIPTOR = 0x0009,
2405 CLUSPROP_FORMAT_LARGE_INTEGER = 0x000a,
2406 CLUSPROP_FORMAT_WORD = 0x000b,
2407 CLUSPROP_FORMAT_FILETIME = 0x000c
2408 } CLUSTER_PROPERTY_FORMAT;
2410 typedef enum {
2411 CLUS_CHAR_UNKNOWN = 0x00000000,
2412 CLUS_CHAR_QUORUM = 0x00000001,
2413 CLUS_CHAR_DELETE_REQUIRES_ALL_NODES = 0x00000002,
2414 CLUS_CHAR_LOCAL_QUORUM = 0x00000004,
2415 CLUS_CHAR_BROADCAST_DELETE = 0x00000020,
2416 CLUS_CHAR_SINGLE_CLUSTER_INSTANCE = 0x00000040,
2417 CLUS_CHAR_SINGLE_GROUP_INSTANCE = 0x00000080,
2418 CLUS_CHAR_COEXIST_IN_SHARED_VOLUME_GROUP = 0x00000100,
2419 CLUS_CHAR_RESERVED1 = 0x00000200,
2420 CLUS_CHAR_MONITOR_DETACH = 0x00000400,
2421 CLUS_CHAR_RESERVED2 = 0x00000800,
2422 CLUS_CHAR_RESERVED3 = 0x00001000,
2423 CLUS_CHAR_RESERVED4 = 0x00002000
2424 } CLUS_CHARACTERISTICS;
2426 typedef enum {
2427 CLUS_FLAG_CORE = 0x00000001
2428 } CLUS_FLAGS;
2430 typedef enum {
2431 MaintenanceModeTypeDisableIsAliveCheck = 1,
2432 MaintenanceModeTypeOfflineResource = 2,
2433 MaintenanceModeTypeUnclusterResource = 3
2434 } MAINTENANCE_MODE_TYPE;
2436 typedef enum {
2437 CLUSTER_CHANGE_NODE_STATE = 0x00000001,
2438 CLUSTER_CHANGE_NODE_DELETED = 0x00000002,
2439 CLUSTER_CHANGE_NODE_ADDED = 0x00000004,
2440 CLUSTER_CHANGE_NODE_PROPERTY = 0x00000008,
2441 CLUSTER_CHANGE_REGISTRY_NAME = 0x00000010,
2442 CLUSTER_CHANGE_REGISTRY_ATTRIBUTES = 0x00000020,
2443 CLUSTER_CHANGE_REGISTRY_VALUE = 0x00000040,
2444 CLUSTER_CHANGE_REGISTRY_SUBTREE = 0x00000080,
2445 CLUSTER_CHANGE_RESOURCE_STATE = 0x00000100,
2446 CLUSTER_CHANGE_RESOURCE_DELETED = 0x00000200,
2447 CLUSTER_CHANGE_RESOURCE_ADDED = 0x00000400,
2448 CLUSTER_CHANGE_RESOURCE_PROPERTY = 0x00000800,
2449 CLUSTER_CHANGE_GROUP_STATE = 0x00001000,
2450 CLUSTER_CHANGE_GROUP_DELETED = 0x00002000,
2451 CLUSTER_CHANGE_GROUP_ADDED = 0x00004000,
2452 CLUSTER_CHANGE_GROUP_PROPERTY = 0x00008000,
2453 CLUSTER_CHANGE_RESOURCE_TYPE_DELETED = 0x00010000,
2454 CLUSTER_CHANGE_RESOURCE_TYPE_ADDED = 0x00020000,
2455 CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY = 0x00040000,
2456 CLUSTER_CHANGE_CLUSTER_RECONNECT = 0x00080000,
2457 CLUSTER_CHANGE_NETWORK_STATE = 0x00100000,
2458 CLUSTER_CHANGE_NETWORK_DELETED = 0x00200000,
2459 CLUSTER_CHANGE_NETWORK_ADDED = 0x00400000,
2460 CLUSTER_CHANGE_NETWORK_PROPERTY = 0x00800000,
2461 CLUSTER_CHANGE_NETINTERFACE_STATE = 0x01000000,
2462 CLUSTER_CHANGE_NETINTERFACE_DELETED = 0x02000000,
2463 CLUSTER_CHANGE_NETINTERFACE_ADDED = 0x04000000,
2464 CLUSTER_CHANGE_NETINTERFACE_PROPERTY = 0x08000000,
2465 CLUSTER_CHANGE_QUORUM_STATE = 0x10000000,
2466 CLUSTER_CHANGE_CLUSTER_STATE = 0x20000000,
2467 CLUSTER_CHANGE_CLUSTER_PROPERTY = 0x40000000,
2468 CLUSTER_CHANGE_HANDLE_CLOSE = 0x80000000
2469 } CLUSTER_CHANGE;
2471 typedef enum {
2472 CLUSREG_SET_VALUE = 1,
2473 CLUSREG_CREATE_KEY = 2,
2474 CLUSREG_DELETE_KEY = 3,
2475 CLUSREG_DELETE_VALUE = 4,
2476 CLUSREG_VALUE_DELETED = 6,
2477 CLUSREG_READ_KEY = 7,
2478 CLUSREG_READ_VALUE = 8,
2479 CLUSREG_READ_ERROR = 9
2480 } CLUSTER_REG_BATCH_COMMAND;
2481 #if 0
2482 typedef enum {
2483 IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
2484 } IDL_CLUSTER_SET_PASSWORD_FLAGS;
2485 #endif
2486 typedef enum {
2487 CLUSTER_QUORUM_MAINTAINED = 0,
2488 CLUSTER_QUORUM_LOST = 1
2489 } CLUSTER_QUORUM_VALUE;
2491 typedef enum {
2492 CLUSTER_OBJECT_TYPE_CLUSTER = 0x00000001,
2493 CLUSTER_OBJECT_TYPE_GROUP = 0x00000002,
2494 CLUSTER_OBJECT_TYPE_RESOURCE = 0x00000003,
2495 CLUSTER_OBJECT_TYPE_RESOURCE_TYPE = 0x00000004,
2496 CLUSTER_OBJECT_TYPE_NETWORK_INTERFACE = 0x00000005,
2497 CLUSTER_OBJECT_TYPE_NETWORK = 0x00000006,
2498 CLUSTER_OBJECT_TYPE_NODE = 0x00000007,
2499 CLUSTER_OBJECT_TYPE_REGISTRY = 0x00000008,
2500 CLUSTER_OBJECT_TYPE_QUORUM = 0x00000009,
2501 CLUSTER_OBJECT_TYPE_SHARED_VOLUME = 0x0000000a
2502 } CLUSTER_OBJECT_TYPE;
2504 typedef enum {
2505 CLUSTER_CHANGE_CLUSTER_RECONNECT_V2 = 0x00000001,
2506 CLUSTER_CHANGE_CLUSTER_STATE_V2 = 0x00000002,
2507 CLUSTER_CHANGE_CLUSTER_GROUP_ADDED_V2 = 0x00000004,
2508 CLUSTER_CHANGE_CLUSTER_HANDLE_CLOSE_V2 = 0x00000008,
2509 CLUSTER_CHANGE_CLUSTER_NETWORK_ADDED_V2 = 0x00000010,
2510 CLUSTER_CHANGE_CLUSTER_NODE_ADDED_V2 = 0x00000020,
2511 CLUSTER_CHANGE_CLUSTER_RESOURCE_TYPE_ADDED_V2 = 0x00000040,
2512 CLUSTER_CHANGE_CLUSTER_COMMON_PROPERTY_V2 = 0x00000080,
2513 CLUSTER_CHANGE_CLUSTER_PRIVATE_PROPERTY_V2 = 0x00000100,
2514 CLUSTER_CHANGE_CLUSTER_LOST_NOTIFICATIONS_V2 = 0x00000200,
2515 CLUSTER_CHANGE_CLUSTER_RENAME_V2 = 0x00000400
2516 } CLUSTER_CHANGE_CLUSTER_V2;
2518 typedef enum {
2519 CLUSTER_CHANGE_GROUP_DELETED_V2 = 0x00000001,
2520 CLUSTER_CHANGE_GROUP_COMMON_PROPERTY_V2 = 0x00000002,
2521 CLUSTER_CHANGE_GROUP_PRIVATE_PROPERTY_V2 = 0x00000004,
2522 CLUSTER_CHANGE_GROUP_STATE_V2 = 0x00000008,
2523 CLUSTER_CHANGE_GROUP_OWNER_NODE_V2 = 0x00000010,
2524 CLUSTER_CHANGE_GROUP_PREFERRED_OWNERS_V2 = 0x00000020,
2525 CLUSTER_CHANGE_GROUP_RESOURCE_ADDED_V2 = 0x00000040,
2526 CLUSTER_CHANGE_GROUP_RESOURCE_GAINED_V2 = 0x00000080,
2527 CLUSTER_CHANGE_GROUP_RESOURCE_LOST_V2 = 0x00000100,
2528 CLUSTER_CHANGE_GROUP_HANDLE_CLOSE_V2 = 0x00000200
2529 } CLUSTER_CHANGE_GROUP_V2;
2531 typedef enum {
2532 CLUSTER_CHANGE_RESOURCE_COMMON_PROPERTY_V2 = 0x00000001,
2533 CLUSTER_CHANGE_RESOURCE_PRIVATE_PROPERTY_V2 = 0x00000002,
2534 CLUSTER_CHANGE_RESOURCE_STATE_V2 = 0x00000004,
2535 CLUSTER_CHANGE_RESOURCE_OWNER_GROUP_V2 = 0x00000008,
2536 CLUSTER_CHANGE_RESOURCE_DEPENDENCIES_V2 = 0x00000010,
2537 CLUSTER_CHANGE_RESOURCE_DEPENDENTS_V2 = 0x00000020,
2538 CLUSTER_CHANGE_RESOURCE_POSSIBLE_OWNERS_V2 = 0x00000040,
2539 CLUSTER_CHANGE_RESOURCE_DELETED_V2 = 0x00000080,
2540 CLUSTER_CHANGE_RESOURCE_DLL_UPGRADED_V2 = 0x00000100,
2541 CLUSTER_CHANGE_RESOURCE_HANDLE_CLOSE_V2 = 0x00000200
2542 } CLUSTER_CHANGE_RESOURCE_V2;
2544 typedef enum {
2545 CLUSTER_CHANGE_RESOURCE_TYPE_DELETED_V2 = 0x00000001,
2546 CLUSTER_CHANGE_RESOURCE_TYPE_COMMON_PROPERTY_V2 = 0x00000002,
2547 CLUSTER_CHANGE_RESOURCE_TYPE_PRIVATE_PROPERTY_V2 = 0x00000004,
2548 CLUSTER_CHANGE_RESOURCE_TYPE_POSSIBLE_OWNERS_V2 = 0x00000008,
2549 CLUSTER_CHANGE_RESOURCE_TYPE_DLL_UPGRADED_V2 = 0x00000010
2550 } CHANGE_RESOURCE_TYPE_V2;
2552 typedef enum {
2553 CLUSTER_CHANGE_NETINTERFACE_DELETED_V2 = 0x00000001,
2554 CLUSTER_CHANGE_NETINTERFACE_COMMON_PROPERTY_V2 = 0x00000002,
2555 CLUSTER_CHANGE_NETINTERFACE_PRIVATE_PROPERTY_V2 = 0x00000004,
2556 CLUSTER_CHANGE_NETINTERFACE_STATE_V2 = 0x00000008,
2557 CLUSTER_CHANGE_NETINTERFACE_HANDLE_CLOSE_V2 = 0x00000010
2558 } CLUSTER_CHANGE_NETINTERFACE_V2;
2560 typedef enum {
2561 CLUSTER_CHANGE_NETWORK_DELETED_V2 = 0x00000001,
2562 CLUSTER_CHANGE_NETWORK_COMMON_PROPERTY_V2 = 0x00000002,
2563 CLUSTER_CHANGE_NETWORK_PRIVATE_PROPERTY_V2 = 0x00000004,
2564 CLUSTER_CHANGE_NETWORK_STATE_V2 = 0x00000008,
2565 CLUSTER_CHANGE_NETWORK_HANDLE_CLOSE_V2 = 0x00000010
2566 } CLUSTER_CHANGE_NETWORK_V2;
2568 typedef enum {
2569 CLUSTER_CHANGE_NODE_NETINTERFACE_ADDED_V2 = 0x00000001,
2570 CLUSTER_CHANGE_NODE_DELETED_V2 = 0x00000002,
2571 CLUSTER_CHANGE_NODE_COMMON_PROPERTY_V2 = 0x00000004,
2572 CLUSTER_CHANGE_NODE_PRIVATE_PROPERTY_V2 = 0x00000008,
2573 CLUSTER_CHANGE_NODE_STATE_V2 = 0x00000010,
2574 CLUSTER_CHANGE_NODE_GROUP_GAINED_V2 = 0x00000020,
2575 CLUSTER_CHANGE_NODE_GROUP_LOST_V2 = 0x00000040,
2576 CLUSTER_CHANGE_NODE_HANDLE_CLOSE_V2 = 0x00000080
2577 } CLUSTER_CHANGE_NODE_V2;
2579 typedef enum {
2580 CLUSTER_CHANGE_REGISTRY_ATTRIBUTES_V2 = 0x00000001,
2581 CLUSTER_CHANGE_REGISTRY_NAME_V2 = 0x00000002,
2582 CLUSTER_CHANGE_REGISTRY_SUBTREE_V2 = 0x00000004,
2583 CLUSTER_CHANGE_REGISTRY_VALUE_V2 = 0x00000008,
2584 CLUSTER_CHANGE_REGISTRY_HANDLE_CLOSE_V2 = 0x00000010
2585 } CLUSTER_CHANGE_REGISTRY_V2;
2587 typedef enum {
2588 CLUSTER_CHANGE_QUORUM_STATE_V2 = 0x00000001
2589 } CLUSTER_CHANGE_QUORUM_V2;
2591 typedef enum {
2592 CLUSTER_CHANGE_SHARED_VOLUME_STATE_V2 = 0x00000001
2593 } CLUSTER_CHANGE_SHARED_VOLUME_V2;
2594 #if 0
2595 typedef enum {
2596 DiskIdSignature = 0x00000001,
2597 DiskIdGuid = 0x00000002,
2598 DiskIdUnKnown = 0x00001388
2599 } CLUSDSK_DISKID_ENUM;
2600 #endif