s3: libsmb: In cli_list_old_send(), push state->mask into the packet, not just mask.
[Samba.git] / librpc / idl / clusapi.idl
blob7cc3f5ff8251f98976855fa1dece0477a4ff9247
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 #define MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE 0x7FFFFFFF
14 interface clusapi
16 #if 0
18 * pidl does not yet have a real [context_handle] implementation, so we
19 * just use some defines here.
22 typedef [context_handle] void *HCLUSTER_RPC;
23 typedef [context_handle] void *HNODE_RPC;
24 typedef [context_handle] void *HGROUP_RPC;
25 typedef [context_handle] void *HRES_RPC;
26 typedef [context_handle] void *HKEY_RPC;
27 typedef [context_handle] void *HNOTIFY_RPC;
28 typedef [context_handle] void *HNETWORK_RPC;
29 typedef [context_handle] void *HNETINTERFACE_RPC;
30 typedef [context_handle] void *HBATCH_PORT_RPC;
31 #else
32 #define HCLUSTER_RPC policy_handle
33 #define HNODE_RPC policy_handle
34 #define HGROUP_RPC policy_handle
35 #define HRES_RPC policy_handle
36 #define HKEY_RPC policy_handle
37 #define HNOTIFY_RPC policy_handle
38 #define HNETWORK_RPC policy_handle
39 #define HNETINTERFACE_RPC policy_handle
40 #define HBATCH_PORT_RPC policy_handle
41 #endif
43 typedef struct {
44 [ size_is( cbInSecurityDescriptor ), length_is( cbOutSecurityDescriptor ) ] uint8 *lpSecurityDescriptor;
45 uint32 cbInSecurityDescriptor;
46 uint32 cbOutSecurityDescriptor;
47 } RPC_SECURITY_DESCRIPTOR;
49 typedef struct {
50 uint32 nLength;
51 RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor;
52 long bInheritHandle;
53 } RPC_SECURITY_ATTRIBUTES;
55 typedef struct {
56 [value(20)] uint32 dwSize;
57 uint32 dwClusterHighestVersion;
58 uint32 dwClusterLowestVersion;
59 uint32 dwFlags;
60 uint32 dwReserved;
61 } CLUSTER_OPERATIONAL_VERSION_INFO;
63 typedef struct {
64 uint32 NodeId;
65 boolean8 SetAttempted;
66 uint32 ReturnStatus;
67 } IDL_CLUSTER_SET_PASSWORD_STATUS;
69 typedef enum {
70 IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
71 } IDL_CLUSTER_SET_PASSWORD_FLAGS;
73 typedef struct {
74 uint32 dwVersion;
75 uint32 dwGroupType;
76 } CLUSTER_CREATE_GROUP_INFO_RPC;
78 /*****************/
79 /* Function 0x00 */
81 #if 0
83 * pidl cannot generate code for functions that return structures in
84 * IDL, therefore pretend the function is void and add the returned
85 * structure as an out parameter. This is what we do with pretty much
86 * all the Open calls right now in this interface - gd
89 HCLUSTER_RPC
90 clusapi_OpenCluster(
91 [ out ] WERROR *Status
93 #else
94 void
95 clusapi_OpenCluster(
96 [ out ] WERROR *Status,
97 [ out ] HCLUSTER_RPC *Cluster
99 #endif
101 /*****************/
102 /* Function 0x01 */
104 WERROR
105 clusapi_CloseCluster(
106 [ in, out ] HCLUSTER_RPC *Cluster
109 /*****************/
110 /* Function 0x02 */
112 WERROR
113 clusapi_SetClusterName(
114 [ in, string ] [charset(UTF16)] uint16 *NewClusterName,
115 [ out ] WERROR *rpc_status
118 /*****************/
119 /* Function 0x03 */
121 WERROR
122 clusapi_GetClusterName(
123 [ out, string ] [charset(UTF16)] uint16 **ClusterName,
124 [ out, string ] [charset(UTF16)] uint16 **NodeName
127 /*****************/
128 /* Function 0x04 */
130 WERROR
131 clusapi_GetClusterVersion(
132 [ out ] uint16 *lpwMajorVersion,
133 [ out ] uint16 *lpwMinorVersion,
134 [ out ] uint16 *lpwBuildNumber,
135 [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
136 [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion
139 /*****************/
140 /* Function 0x05 */
142 WERROR
143 clusapi_GetQuorumResource(
144 [ out, string ] [charset(UTF16)] uint16 **lpszResourceName,
145 [ out, string ] [charset(UTF16)] uint16 **lpszDeviceName,
146 [ out ] uint32 *pdwMaxQuorumLogSize,
147 [ out ] WERROR *rpc_status
150 /*****************/
151 /* Function 0x06 */
153 WERROR
154 clusapi_SetQuorumResource(
155 [ in ] HRES_RPC hResource,
156 [ in, string ] [charset(UTF16)] uint16 *lpszDeviceName,
157 [ in ] uint32 dwMaxQuorumLogSize,
158 [ out ] WERROR *rpc_status
161 typedef [bitmap32bit] bitmap {
162 CLUSTER_ENUM_NODE = 0x00000001,
163 CLUSTER_ENUM_RESTYPE = 0x00000002,
164 CLUSTER_ENUM_RESOURCE = 0x00000004,
165 CLUSTER_ENUM_GROUP = 0x00000008,
166 CLUSTER_ENUM_NETWORK = 0x00000010,
167 CLUSTER_ENUM_NETINTERFACE = 0x00000020,
168 CLUSTER_ENUM_INTERNAL_NETWORK = 0x80000000,
169 CLUSTER_ENUM_SHARED_VOLUME_RESOURCE = 0x40000000
170 } ClusterEnumType;
172 typedef struct {
173 ClusterEnumType Type;
174 [string] [charset(UTF16)] uint16 *Name;
175 } ENUM_ENTRY;
177 typedef struct {
178 uint32 EntryCount;
179 [size_is(EntryCount)] ENUM_ENTRY Entry[*];
180 } ENUM_LIST;
182 typedef struct {
183 [string] [charset(UTF16)] uint16 *Name;
184 [string] [charset(UTF16)] uint16 *Id;
185 uint32 dwState;
186 [string] [charset(UTF16)] uint16 *Owner;
187 uint32 dwFlags;
188 uint32 cbProperties;
189 [size_is(cbProperties)] uint8* Properties;
190 uint32 cbRoProperties;
191 [size_is(cbRoProperties)] uint8* RoProperties;
192 } GROUP_ENUM_ENTRY;
194 typedef struct {
195 [string] [charset(UTF16)] uint16 *Name;
196 [string] [charset(UTF16)] uint16 *Id;
197 [string] [charset(UTF16)] uint16 *OwnerName;
198 [string] [charset(UTF16)] uint16 *OwnerId;
199 uint32 cbProperties;
200 [size_is(cbProperties)] uint8* Properties;
201 uint32 cbRoProperties;
202 [size_is(cbRoProperties)] uint8* RoProperties;
203 } RESOURCE_ENUM_ENTRY;
205 typedef struct {
206 uint32 EntryCount;
207 [size_is(EntryCount)] GROUP_ENUM_ENTRY Entry[*];
208 } GROUP_ENUM_LIST;
210 typedef struct {
211 uint32 EntryCount;
212 [size_is(EntryCount)] RESOURCE_ENUM_ENTRY Entry[*];
213 } RESOURCE_ENUM_LIST;
215 /*****************/
216 /* Function 0x07 */
218 WERROR
219 clusapi_CreateEnum(
220 [ in ] ClusterEnumType dwType,
221 [ out ] ENUM_LIST **ReturnEnum,
222 [ out ] WERROR *rpc_status
225 /*****************/
226 /* Function 0x08 */
228 #if 0
229 HRES_RPC
230 clusapi_OpenResource(
231 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
232 [ out ] WERROR *Status,
233 [ out ] WERROR *rpc_status
235 #else
236 void
237 clusapi_OpenResource(
238 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
239 [ out ] WERROR *Status,
240 [ out ] WERROR *rpc_status,
241 [ out ] HRES_RPC *hResource
243 #endif
244 /*****************/
245 /* Function 0x09 */
247 typedef [v1_enum] enum {
248 CLUSTER_RESOURCE_DEFAULT_MONITOR = 0x00000000,
249 CLUSTER_RESOURCE_SEPARATE_MONITOR = 0x00000001
250 } clusapi_CreateResourceFlags;
252 #if 0
253 HRES_RPC
254 clusapi_CreateResource(
255 [ in ] HGROUP_RPC hGroup,
256 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
257 [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
258 [ in ] clusapi_CreateResourceFlags dwFlags,
259 [ out ] WERROR *Status,
260 [ out ] WERROR *rpc_status
262 #else
263 void
264 clusapi_CreateResource(
265 [ in ] HGROUP_RPC hGroup,
266 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
267 [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
268 [ in ] clusapi_CreateResourceFlags dwFlags,
269 [ out ] WERROR *Status,
270 [ out ] WERROR *rpc_status,
271 [ out ] HRES_RPC *hResource
273 #endif
274 /*****************/
275 /* Function 0x0A */
277 WERROR
278 clusapi_DeleteResource(
279 [ in ] HRES_RPC hResource,
280 [ out ] WERROR *rpc_status
283 /*****************/
284 /* Function 0x0B */
286 WERROR
287 clusapi_CloseResource(
288 [ in, out ] HRES_RPC *Resource
291 /*****************/
292 /* Function 0x0C */
294 typedef [v1_enum] enum {
295 ClusterResourceInitializing = 0x00000001,
296 ClusterResourceOnline = 0x00000002,
297 ClusterResourceOffline = 0x00000003,
298 ClusterResourceFailed = 0x00000004,
299 ClusterResourceOnlinePending = 0x00000081,
300 ClusterResourceOfflinePending = 0x00000082,
301 ClusterResourceStateUnknown = 0xFFFFFFFF
302 } clusapi_ClusterResourceState;
304 WERROR
305 clusapi_GetResourceState(
306 [ in ] HRES_RPC hResource,
307 [ out ] clusapi_ClusterResourceState *State,
308 [ out, string ] [charset(UTF16)] uint16 **NodeName,
309 [ out, string ] [charset(UTF16)] uint16 **GroupName,
310 [ out ] WERROR *rpc_status
313 /*****************/
314 /* Function 0x0D */
316 WERROR
317 clusapi_SetResourceName(
318 [ in ] HRES_RPC hResource,
319 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
320 [ out ] WERROR *rpc_status
323 /*****************/
324 /* Function 0x0E */
326 WERROR
327 clusapi_GetResourceId(
328 [ in ] HRES_RPC hResource,
329 [ out, string ] [charset(UTF16)] uint16 **pGuid,
330 [ out ] WERROR *rpc_status
333 /*****************/
334 /* Function 0x0F */
336 WERROR
337 clusapi_GetResourceType(
338 [ in ] HRES_RPC hResource,
339 [ out, string ] [charset(UTF16)] uint16 **lpszResourceType,
340 [ out ] WERROR *rpc_status
343 /*****************/
344 /* Function 0x10 */
346 WERROR
347 clusapi_FailResource(
348 [ in ] HRES_RPC hResource,
349 [ out ] WERROR *rpc_status
352 /*****************/
353 /* Function 0x11 */
355 WERROR
356 clusapi_OnlineResource(
357 [ in ] HRES_RPC hResource,
358 [ out ] WERROR *rpc_status
361 /*****************/
362 /* Function 0x12 */
364 WERROR
365 clusapi_OfflineResource(
366 [ in ] HRES_RPC hResource,
367 [ out ] WERROR *rpc_status
370 /*****************/
371 /* Function 0x13 */
373 WERROR
374 clusapi_AddResourceDependency(
375 [ in ] HRES_RPC hResource,
376 [ in ] HRES_RPC hDependsOn,
377 [ out ] WERROR *rpc_status
380 /*****************/
381 /* Function 0x14 */
383 WERROR
384 clusapi_RemoveResourceDependency(
385 [ in ] HRES_RPC hResource,
386 [ in ] HRES_RPC hDependsOn,
387 [ out ] WERROR *rpc_status
390 /*****************/
391 /* Function 0x15 */
393 WERROR
394 clusapi_CanResourceBeDependent(
395 [ in ] HRES_RPC hResource,
396 [ in ] HRES_RPC hResourceDependent,
397 [ out ] WERROR *rpc_status
400 /*****************/
401 /* Function 0x16 */
403 WERROR
404 clusapi_CreateResEnum(
405 [ in ] HRES_RPC hResource,
406 [ in ] uint32 dwType,
407 [ out ] ENUM_LIST **ReturnEnum,
408 [ out ] WERROR *rpc_status
411 /*****************/
412 /* Function 0x17 */
414 WERROR
415 clusapi_AddResourceNode(
416 [ in ] HRES_RPC hResource,
417 [ in ] HNODE_RPC hNode,
418 [ out ] WERROR *rpc_status
421 /*****************/
422 /* Function 0x18 */
424 WERROR
425 clusapi_RemoveResourceNode(
426 [ in ] HRES_RPC hResource,
427 [ in ] HNODE_RPC hNode,
428 [ out ] WERROR *rpc_status
431 /*****************/
432 /* Function 0x19 */
434 WERROR
435 clusapi_ChangeResourceGroup(
436 [ in ] HRES_RPC hResource,
437 [ in ] HGROUP_RPC hGroup,
438 [ out ] WERROR *rpc_status
441 /*****************/
442 /* Function 0x1A */
444 WERROR
445 clusapi_CreateResourceType(
446 [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
447 [ in, string ] [charset(UTF16)] uint16 *lpszDisplayName,
448 [ in, string ] [charset(UTF16)] uint16 *lpszDllName,
449 [ in ] uint32 dwLooksAlive,
450 [ in ] uint32 dwIsAlive,
451 [ out ] WERROR *rpc_status
454 /*****************/
455 /* Function 0x1B */
457 WERROR
458 clusapi_DeleteResourceType(
459 [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
460 [ out ] WERROR *rpc_status
463 /*****************/
464 /* Function 0x1C */
465 #if 0
466 HKEY_RPC
467 clusapi_GetRootKey(
468 [ in ] winreg_AccessMask samDesired,
469 [ out ] WERROR *Status,
470 [ out ] WERROR *rpc_status
472 #else
473 void
474 clusapi_GetRootKey(
475 [ in ] winreg_AccessMask samDesired,
476 [ out ] WERROR *Status,
477 [ out ] WERROR *rpc_status,
478 [ out ] HKEY_RPC *phKey
480 #endif
481 /*****************/
482 /* Function 0x1D */
483 #if 0
484 HKEY_RPC
485 clusapi_CreateKey(
486 [ in ] HKEY_RPC hKey,
487 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
488 [ in ] uint32 dwOptions,
489 [ in ] winreg_AccessMask samDesired,
490 [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
491 [ out ] uint32 *lpdwDisposition,
492 [ out ] WERROR *Status,
493 [ out ] WERROR *rpc_status
495 #else
496 void
497 clusapi_CreateKey(
498 [ in ] HKEY_RPC hKey,
499 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
500 [ in ] uint32 dwOptions,
501 [ in ] winreg_AccessMask samDesired,
502 [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
503 [ out ] uint32 *lpdwDisposition,
504 [ out ] WERROR *Status,
505 [ out ] WERROR *rpc_status,
506 [ out ] HKEY_RPC *phKey
508 #endif
509 /*****************/
510 /* Function 0x1E */
511 #if 0
512 HKEY_RPC
513 clusapi_OpenKey(
514 [ in ] HKEY_RPC hKey,
515 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
516 [ in ] winreg_AccessMask samDesired,
517 [ out ] WERROR *Status,
518 [ out ] WERROR *rpc_status
520 #else
521 void
522 clusapi_OpenKey(
523 [ in ] HKEY_RPC hKey,
524 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
525 [ in ] winreg_AccessMask samDesired,
526 [ out ] WERROR *Status,
527 [ out ] WERROR *rpc_status,
528 [ out ] HKEY_RPC *phKey
530 #endif
531 /*****************/
532 /* Function 0x1F */
534 WERROR
535 clusapi_EnumKey(
536 [ in ] HKEY_RPC hKey,
537 [ in ] uint32 dwIndex,
538 [ out, string ] [charset(UTF16)] uint16 **KeyName,
539 [ out ] NTTIME *lpftLastWriteTime,
540 [ out ] WERROR *rpc_status
543 /*****************/
544 /* Function 0x20 */
546 WERROR
547 clusapi_SetValue(
548 [ in ] HKEY_RPC hKey,
549 [ in, string ] [charset(UTF16)] uint16 *lpValueName,
550 [ in ] winreg_Type dwType,
551 [ in, size_is(cbData) ] uint8 *lpData,
552 [ in ] uint32 cbData,
553 [ out ] WERROR *rpc_status
556 /*****************/
557 /* Function 0x21 */
559 WERROR
560 clusapi_DeleteValue(
561 [ in ] HKEY_RPC hKey,
562 [ in, string ] [charset(UTF16)] uint16 *lpValueName,
563 [ out ] WERROR *rpc_status
566 /*****************/
567 /* Function 0x22 */
569 WERROR
570 clusapi_QueryValue(
571 [ in ] HKEY_RPC hKey,
572 [ in, string ] [charset(UTF16)] uint16 *lpValueName,
573 [ out ] winreg_Type *lpValueType,
574 [ out, size_is(cbData) ] uint8 *lpData,
575 [ in ] uint32 cbData,
576 [ out ] uint32 *lpcbRequired,
577 [ out ] WERROR *rpc_status
580 /*****************/
581 /* Function 0x23 */
583 WERROR
584 clusapi_DeleteKey(
585 [ in ] HKEY_RPC hKey,
586 [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
587 [ out ] WERROR *rpc_status
590 /*****************/
591 /* Function 0x24 */
593 WERROR
594 clusapi_EnumValue(
595 [ in ] HKEY_RPC hKey,
596 [ in ] uint32 dwIndex,
597 [ out, string ] [charset(UTF16)] uint16 **lpValueName,
598 [ out ] winreg_Type *lpType,
599 [ out, size_is(*lpcbData) ] uint8 *lpData,
600 [ in, out ] uint32 *lpcbData,
601 [ out ] uint32 *TotalSize,
602 [ out ] WERROR *rpc_status
605 /*****************/
606 /* Function 0x25 */
608 WERROR
609 clusapi_CloseKey(
610 [ in, out ] HKEY_RPC *pKey
613 /*****************/
614 /* Function 0x26 */
616 WERROR
617 clusapi_QueryInfoKey(
618 [ in ] HKEY_RPC hKey,
619 [ out ] uint32 *lpcSubKeys,
620 [ out ] uint32 *lpcbMaxSubKeyLen,
621 [ out ] uint32 *lpcValues,
622 [ out ] uint32 *lpcbMaxValueNameLen,
623 [ out ] uint32 *lpcbMaxValueLen,
624 [ out ] uint32 *lpcbSecurityDescriptor,
625 [ out ] NTTIME *lpftLastWriteTime,
626 [ out ] WERROR *rpc_status
629 /*****************/
630 /* Function 0x27 */
632 WERROR
633 clusapi_SetKeySecurity(
634 [ in ] HKEY_RPC hKey,
635 [ in ] uint32 SecurityInformation,
636 [ in ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
637 [ out ] WERROR *rpc_status
640 /*****************/
641 /* Function 0x28 */
643 WERROR
644 clusapi_GetKeySecurity(
645 [ in ] HKEY_RPC hKey,
646 [ in ] uint32 SecurityInformation,
647 [ in, out ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
648 [ out ] WERROR *rpc_status
651 /*****************/
652 /* Function 0x29 */
653 #if 0
654 HGROUP_RPC
655 clusapi_OpenGroup(
656 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
657 [ out ] WERROR *Status,
658 [ out ] WERROR *rpc_status
660 #else
661 void
662 clusapi_OpenGroup(
663 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
664 [ out ] WERROR *Status,
665 [ out ] WERROR *rpc_status,
666 [ out ] HGROUP_RPC *hGroup
668 #endif
669 /*****************/
670 /* Function 0x2A */
671 #if 0
672 HGROUP_RPC
673 clusapi_CreateGroup(
674 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
675 [ out ] WERROR *Status,
676 [ out ] WERROR *rpc_status
678 #else
679 void
680 clusapi_CreateGroup(
681 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
682 [ out ] WERROR *Status,
683 [ out ] WERROR *rpc_status,
684 [ out ] HGROUP_RPC *hGroup
686 #endif
687 /*****************/
688 /* Function 0x2B */
690 WERROR
691 clusapi_DeleteGroup(
692 [ in ] HGROUP_RPC Group,
693 [ in ] boolean8 force,
694 [ out ] WERROR *rpc_status
697 /*****************/
698 /* Function 0x2C */
700 WERROR
701 clusapi_CloseGroup(
702 [ in, out ] HGROUP_RPC *Group
705 /*****************/
706 /* Function 0x2D */
708 typedef [v1_enum] enum {
709 ClusterGroupOnline = 0x00000000,
710 ClusterGroupOffline = 0x00000001,
711 ClusterGroupFailed = 0x00000002,
712 ClusterGroupPartialOnline = 0x00000003,
713 ClusterGroupPending = 0x00000004,
714 ClusterGroupStateUnknown = 0xFFFFFFFF
715 } clusapi_ClusterGroupState;
717 WERROR
718 clusapi_GetGroupState(
719 [ in ] HGROUP_RPC hGroup,
720 [ out ] clusapi_ClusterGroupState *State,
721 [ out, string ] [charset(UTF16)] uint16 **NodeName,
722 [ out ] WERROR *rpc_status
725 /*****************/
726 /* Function 0x2E */
728 WERROR
729 clusapi_SetGroupName(
730 [ in ] HGROUP_RPC hGroup,
731 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
732 [ out ] WERROR *rpc_status
735 /*****************/
736 /* Function 0x2F */
738 WERROR
739 clusapi_GetGroupId(
740 [ in ] HGROUP_RPC hGroup,
741 [ out, string ] [charset(UTF16)] uint16 **pGuid,
742 [ out ] WERROR *rpc_status
745 /*****************/
746 /* Function 0x30 */
748 WERROR
749 clusapi_GetNodeId(
750 [ in ] HNODE_RPC hNode,
751 [ out, string ] [charset(UTF16)] uint16 **pGuid,
752 [ out ] WERROR *rpc_status
755 /*****************/
756 /* Function 0x31 */
758 WERROR
759 clusapi_OnlineGroup(
760 [ in ] HGROUP_RPC hGroup,
761 [ out ] WERROR *rpc_status
764 /*****************/
765 /* Function 0x32 */
767 WERROR
768 clusapi_OfflineGroup(
769 [ in ] HGROUP_RPC hGroup,
770 [ out ] WERROR *rpc_status
773 /*****************/
774 /* Function 0x33 */
776 WERROR
777 clusapi_MoveGroup(
778 [ in ] HGROUP_RPC hGroup,
779 [ out ] WERROR *rpc_status
782 /*****************/
783 /* Function 0x34 */
785 WERROR
786 clusapi_MoveGroupToNode(
787 [ in ] HGROUP_RPC hGroup,
788 [ in ] HNODE_RPC hNode,
789 [ out ] WERROR *rpc_status
792 /*****************/
793 /* Function 0x35 */
795 typedef [bitmap32bit] bitmap {
796 CLUSTER_GROUP_ENUM_CONTAINS = 0x00000001,
797 CLUSTER_GROUP_ENUM_NODES = 0x00000002
798 } ClusterGroupEnumType;
800 WERROR
801 clusapi_CreateGroupResourceEnum(
802 [ in ] HGROUP_RPC hGroup,
803 [ in ] ClusterGroupEnumType dwType,
804 [ out ] ENUM_LIST **ReturnEnum,
805 [ out ] WERROR *rpc_status
808 /*****************/
809 /* Function 0x36 */
811 WERROR
812 clusapi_SetGroupNodeList(
813 [ in ] HGROUP_RPC hGroup,
814 [ in, unique, size_is(cchListSize) ] uint16 *multiSzNodeList,
815 [ in ] uint32 cchListSize,
816 [ out ] WERROR *rpc_status
819 /*****************/
820 /* Function 0x37 */
821 #if 0
822 HNOTIFY_RPC
823 clusapi_CreateNotify(
824 [ out ] WERROR *Status,
825 [ out ] WERROR *rpc_status
827 #else
828 void
829 clusapi_CreateNotify(
830 [ out ] WERROR *Status,
831 [ out ] WERROR *rpc_status,
832 [ out ] HNOTIFY_RPC *hNotify
834 #endif
835 /*****************/
836 /* Function 0x38 */
838 WERROR
839 clusapi_CloseNotify(
840 [ in, out ] HNOTIFY_RPC *Notify
843 /*****************/
844 /* Function 0x39 */
846 WERROR
847 clusapi_AddNotifyCluster(
848 [ in ] HNOTIFY_RPC hNotify,
849 [ in ] HCLUSTER_RPC hCluster,
850 [ in ] uint32 dwFilter,
851 [ in ] uint32 dwNotifyKey,
852 [ out ] WERROR *rpc_status
855 /*****************/
856 /* Function 0x3A */
858 WERROR
859 clusapi_AddNotifyNode(
860 [ in ] HNOTIFY_RPC hNotify,
861 [ in ] HNODE_RPC hNode,
862 [ in ] uint32 dwFilter,
863 [ in ] uint32 dwNotifyKey,
864 [ out ] uint32 *dwStateSequence,
865 [ out ] WERROR *rpc_status
868 /*****************/
869 /* Function 0x3B */
871 WERROR
872 clusapi_AddNotifyGroup(
873 [ in ] HNOTIFY_RPC hNotify,
874 [ in ] HGROUP_RPC hGroup,
875 [ in ] uint32 dwFilter,
876 [ in ] uint32 dwNotifyKey,
877 [ out ] uint32 *dwStateSequence,
878 [ out ] WERROR *rpc_status
881 /*****************/
882 /* Function 0x3C */
884 WERROR
885 clusapi_AddNotifyResource(
886 [ in ] HNOTIFY_RPC hNotify,
887 [ in ] HRES_RPC hResource,
888 [ in ] uint32 dwFilter,
889 [ in ] uint32 dwNotifyKey,
890 [ out ] uint32 *dwStateSequence,
891 [ out ] WERROR *rpc_status
894 /*****************/
895 /* Function 0x3D */
897 WERROR
898 clusapi_AddNotifyKey(
899 [ in ] HNOTIFY_RPC hNotify,
900 [ in ] HKEY_RPC hKey,
901 [ in ] uint32 dwNotifyKey,
902 [ in ] uint32 Filter,
903 [ in ] boolean8 WatchSubTree,
904 [ out ] WERROR *rpc_status
907 /*****************/
908 /* Function 0x3E */
910 WERROR
911 clusapi_ReAddNotifyNode(
912 [ in ] HNOTIFY_RPC hNotify,
913 [ in ] HNODE_RPC hNode,
914 [ in ] uint32 dwFilter,
915 [ in ] uint32 dwNotifyKey,
916 [ in ] uint32 StateSequence,
917 [ out ] WERROR *rpc_status
920 /*****************/
921 /* Function 0x3F */
923 WERROR
924 clusapi_ReAddNotifyGroup(
925 [ in ] HNOTIFY_RPC hNotify,
926 [ in ] HGROUP_RPC hGroup,
927 [ in ] uint32 dwFilter,
928 [ in ] uint32 dwNotifyKey,
929 [ in ] uint32 StateSequence,
930 [ out ] WERROR *rpc_status
933 /*****************/
934 /* Function 0x40 */
936 WERROR
937 clusapi_ReAddNotifyResource(
938 [ in ] HNOTIFY_RPC hNotify,
939 [ in ] HRES_RPC hResource,
940 [ in ] uint32 dwFilter,
941 [ in ] uint32 dwNotifyKey,
942 [ in ] uint32 StateSequence,
943 [ out ] WERROR *rpc_status
946 /*****************/
947 /* Function 0x41 */
949 WERROR
950 clusapi_GetNotify(
951 [ in ] HNOTIFY_RPC hNotify,
952 [ out ] uint32 *dwNotifyKey,
953 [ out ] uint32 *dwFilter,
954 [ out ] uint32 *dwStateSequence,
955 [ out, string ] [charset(UTF16)] uint16 **Name,
956 [ out ] WERROR *rpc_status
959 /*****************/
960 /* Function 0x42 */
961 #if 0
962 HNODE_RPC
963 clusapi_OpenNode(
964 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
965 [ out ] WERROR *Status,
966 [ out ] WERROR *rpc_status
968 #else
969 void
970 clusapi_OpenNode(
971 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
972 [ out ] WERROR *Status,
973 [ out ] WERROR *rpc_status,
974 [ out ] HNODE_RPC *hNode
976 #endif
977 /*****************/
978 /* Function 0x43 */
980 WERROR
981 clusapi_CloseNode(
982 [ in, out ] HNODE_RPC *Node
985 /*****************/
986 /* Function 0x44 */
988 typedef [v1_enum] enum {
989 ClusterNodeUp = 0x00000000,
990 ClusterNodeDown = 0x00000001,
991 ClusterNodePaused = 0x00000002,
992 ClusterNodeJoining = 0x00000003,
993 ClusterNodeStateUnknown = 0xFFFFFFFF
994 } clusapi_ClusterNodeState;
996 WERROR
997 clusapi_GetNodeState(
998 [ in ] HNODE_RPC hNode,
999 [ out ] clusapi_ClusterNodeState *State,
1000 [ out ] WERROR *rpc_status
1003 /*****************/
1004 /* Function 0x45 */
1006 WERROR
1007 clusapi_PauseNode(
1008 [ in ] HNODE_RPC hNode,
1009 [ out ] WERROR *rpc_status
1012 /*****************/
1013 /* Function 0x46 */
1015 WERROR
1016 clusapi_ResumeNode(
1017 [ in ] HNODE_RPC hNode,
1018 [ out ] WERROR *rpc_status
1021 /*****************/
1022 /* Function 0x47 */
1024 WERROR
1025 clusapi_EvictNode(
1026 [ in ] HNODE_RPC hNode,
1027 [ out ] WERROR *rpc_status
1030 /*****************/
1031 /* Function 0x48 */
1033 WERROR
1034 clusapi_NodeResourceControl(
1035 [ in ] HRES_RPC hResource,
1036 [ in ] HNODE_RPC hNode,
1037 [ in ] uint32 dwControlCode,
1038 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1039 [ in ] uint32 nInBufferSize,
1040 [ out, size_is(nOutBufferSize),
1041 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1042 [ in ] uint32 nOutBufferSize,
1043 [ out ] uint32 *lpBytesReturned,
1044 [ out ] uint32 *lpcbRequired,
1045 [ out ] WERROR *rpc_status
1048 /*****************/
1049 /* Function 0x49 */
1051 typedef [v1_enum] enum {
1052 CLUS_RESCLASS_UNKNOWN = 0x00000000,
1053 CLUS_RESCLASS_STORAGE = 0x00000001,
1054 CLUS_RESCLASS_NETWORK = 0x00000002
1055 } clusapi_ResourceClass;
1057 typedef [public] struct {
1058 clusapi_ResourceClass Class;
1059 uint32 SubClass;
1060 } CLUS_RESOURCE_CLASS_INFO;
1062 typedef [v1_enum] enum {
1063 CLUSCTL_RESOURCE_UNKNOWN = 0x01000000,
1064 CLUSCTL_RESOURCE_GET_CHARACTERISTICS = 0x01000005,
1065 CLUSCTL_RESOURCE_GET_FLAGS = 0x01000009,
1066 CLUSCTL_RESOURCE_GET_CLASS_INFO = 0x0100000D,
1067 CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES = 0x01000011,
1068 CLUSCTL_RESOURCE_GET_NAME = 0x01000029,
1069 CLUSCTL_RESOURCE_GET_RESOURCE_TYPE = 0x0100002D,
1070 CLUSCTL_RESOURCE_GET_ID = 0x01000039,
1071 CLUSCTL_RESOURCE_ENUM_COMMON_PROPERTIES = 0x01000051,
1072 CLUSCTL_RESOURCE_GET_RO_COMMON_PROPERTIES = 0x01000055,
1073 CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES = 0x01000059,
1074 CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES = 0x0140005E,
1075 CLUSCTL_RESOURCE_VALIDATE_COMMON_PROPERTIES = 0x01000061,
1076 CLUSCTL_RESOURCE_GET_COMMON_PROPERTY_FMTS = 0x01000065,
1077 CLUSCTL_RESOURCE_ENUM_PRIVATE_PROPERTIES = 0x01000079,
1078 CLUSCTL_RESOURCE_GET_RO_PRIVATE_PROPERTIES = 0x0100007D,
1079 CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES = 0x01000081,
1080 CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES = 0x01400086,
1081 CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES = 0x01000089,
1082 CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTY_FMTS = 0x0100008D,
1083 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT = 0x014000A2,
1084 CLUSCTL_RESOURCE_DELETE_REGISTRY_CHECKPOINT = 0x014000A6,
1085 CLUSCTL_RESOURCE_GET_REGISTRY_CHECKPOINTS = 0x010000A9,
1086 CLUSCTL_RESOURCE_ADD_CRYPTO_CHECKPOINT = 0x014000AE,
1087 CLUSCTL_RESOURCE_DELETE_CRYPTO_CHECKPOINT = 0x014000B2,
1088 CLUSCTL_RESOURCE_GET_CRYPTO_CHECKPOINTS = 0x010000B5,
1089 CLUSCTL_RESOURCE_UPGRADE_DLL = 0x014000BA,
1090 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_64BIT = 0x014000BE,
1091 CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_32BIT = 0x014000C2,
1092 CLUSCTL_RESOURCE_GET_NETWORK_NAME = 0x01000169,
1093 CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS = 0x01000172,
1094 CLUSCTL_RESOURCE_GET_DNS_NAME = 0x01000175,
1095 CLUSCTL_RESOURCE_NETNAME_SET_PWD_INFO = 0x0100017A,
1096 CLUSCTL_RESOURCE_NETNAME_DELETE_CO = 0x0100017E,
1097 CLUSCTL_RESOURCE_NETNAME_VALIDATE_VCO = 0x01000181,
1098 CLUSCTL_RESOURCE_NETNAME_RESET_VCO = 0x01000185,
1099 CLUSCTL_RESOURCE_NETNAME_CREDS_UPDATED = 0x01c0018a,
1100 CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO = 0x01000191,
1101 CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = 0x01000199,
1102 CLUSCTL_RESOURCE_IPADDRESS_RENEW_LEASE = 0x014001BE,
1103 CLUSCTL_RESOURCE_IPADDRESS_RELEASE_LEASE = 0x014001C2,
1104 CLUSCTL_RESOURCE_QUERY_MAINTENANCE_MODE = 0x010001E1,
1105 CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE = 0x014001E6,
1106 CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER = 0x014001EA,
1107 CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX = 0x010001F1,
1108 CLUSCTL_RESOURCE_STORAGE_GET_DIRTY = 0x01000219,
1109 CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS = 0x01000211,
1110 CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO = 0x01000225,
1111 CLUSCTL_RESOURCE_VM_START_MIGRATION = 0x01600004,
1112 CLUSCTL_RESOURCE_VM_CANCEL_MIGRATION = 0x01600008,
1113 CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE = 0x01400296,
1114 CLUSCTL_RESOURCE_ENABLE_SHARED_VOLUME_DIRECTIO = 0x0140028a,
1115 CLUSCTL_RESOURCE_DISABLE_SHARED_VOLUME_DIRECTIO = 0x0140028e,
1116 CLUSCTL_RESOURCE_SET_SHARED_VOLUME_BACKUP_MODE = 0x0140029a,
1117 CLUSCTL_RESOURCE_GET_RELATED_RESOURCE_NAMES = 0x01001fad,
1118 CLUSCTL_RESOURCE_POOL_GET_DRIVE_INFO = 0x010002b5,
1119 CLUSCTL_RESOURCE_CLOUD_WITNESS_UPDATE_TOKEN = 0x014020e6,
1120 CLUSCTL_RESOURCE_NETNAME_CHECK_OU_PERMISSIONS = 0x07002121,
1121 CLUSCTL_RESOURCE_NETNAME_CHECK_AD_STATE = 0x07002125
1122 } clusapi_ResourceControlCode;
1124 WERROR
1125 clusapi_ResourceControl(
1126 [ in ] HRES_RPC hResource,
1127 [ in ] clusapi_ResourceControlCode dwControlCode,
1128 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1129 [ in ] uint32 nInBufferSize,
1130 [ out, size_is(nOutBufferSize),
1131 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1132 [ in ] uint32 nOutBufferSize,
1133 [ out ] uint32 *lpBytesReturned,
1134 [ out ] uint32 *lpcbRequired,
1135 [ out ] WERROR *rpc_status
1138 /*****************/
1139 /* Function 0x4A */
1141 WERROR
1142 clusapi_NodeResourceTypeControl(
1143 [ in ] HCLUSTER_RPC hCluster,
1144 [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
1145 [ in ] HNODE_RPC hNode,
1146 [ in ] uint32 dwControlCode,
1147 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1148 [ in ] uint32 nInBufferSize,
1149 [ out, size_is(nOutBufferSize),
1150 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1151 [ in ] uint32 nOutBufferSize,
1152 [ out ] uint32 *lpBytesReturned,
1153 [ out ] uint32 *lpcbRequired,
1154 [ out ] WERROR *rpc_status
1157 /*****************/
1158 /* Function 0x4B */
1160 typedef [v1_enum] enum {
1161 CLUSCTL_RESOURCE_TYPE_UNKNOWN = 0x02000000,
1162 CLUSCTL_RESOURCE_TYPE_GET_CHARACTERISTICS = 0x02000005,
1163 CLUSCTL_RESOURCE_TYPE_GET_FLAGS = 0x02000009,
1164 CLUSCTL_RESOURCE_TYPE_GET_CLASS_INFO = 0x0200000D,
1165 CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES = 0x02000011,
1166 CLUSCTL_RESOURCE_TYPE_GET_ARB_TIMEOUT = 0x02000015,
1167 CLUSCTL_RESOURCE_TYPE_ENUM_COMMON_PROPERTIES = 0x02000051,
1168 CLUSCTL_RESOURCE_TYPE_GET_RO_COMMON_PROPERTIES = 0x02000055,
1169 CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTIES = 0x02000059,
1170 CLUSCTL_RESOURCE_TYPE_SET_COMMON_PROPERTIES = 0x0240005E,
1171 CLUSCTL_RESOURCE_TYPE_VALIDATE_COMMON_PROPERTIES = 0x02000061,
1172 CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTY_FMTS = 0x02000065,
1173 CLUSCTL_RESOURCE_TYPE_GET_COMMON_RESOURCE_PROPERTY_FMTS = 0x02000069,
1174 CLUSCTL_RESOURCE_TYPE_ENUM_PRIVATE_PROPERTIES = 0x02000079,
1175 CLUSCTL_RESOURCE_TYPE_GET_RO_PRIVATE_PROPERTIES = 0x0200007D,
1176 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES = 0x02000081,
1177 CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES = 0x02400086,
1178 CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES = 0x02000089,
1179 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTY_FMTS = 0x0200008D,
1180 CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_RESOURCE_PROPERTY_FMTS= 0x02000091,
1181 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS = 0x02000195,
1182 CLUSCTL_RESOURCE_TYPE_NETNAME_VALIDATE_NETNAME = 0x02000235,
1183 CLUSCTL_RESOURCE_TYPE_VALIDATE_PATH = 0x02000231,
1184 CLUSCTL_RESOURCE_TYPE_GEN_APP_VALIDATE_DIRECTORY = 0x02000239,
1185 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DRIVELETTERS = 0x020001ED,
1186 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX = 0x020001F5,
1187 CLUSCTL_RESOURCE_TYPE_STORAGE_REMAP_DRIVELETTER = 0x02000201,
1188 CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID = 0x02000205,
1189 CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE = 0x02000209,
1190 CLUSCTL_RESOURCE_TYPE_STORAGE_RELEASE_OWNERSHIP = 0x0240020E,
1191 CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CSV_FILE = 0x1000229,
1192 CLUSCTL_RESOURCE_TYPE_CLOUD_WITNESS_VALIDATE_CREDENTIALS= 0x020020e1,
1193 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_LOGDISKS = 0x02002149,
1194 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_TARGET_DATADISKS = 0x0200214D,
1195 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_SOURCE_DATADISKS = 0x02002151,
1196 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICA_VOLUMES = 0x02002159,
1197 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_LOG_VOLUME = 0x0200215D,
1198 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICATED_DISKS = 0x02002155,
1199 CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_RESOURCE_GROUP = 0x02002161
1200 } clusapi_ResourceTypeControlCode;
1202 WERROR
1203 clusapi_ResourceTypeControl(
1204 [ in ] HCLUSTER_RPC hCluster,
1205 [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
1206 [ in ] clusapi_ResourceTypeControlCode dwControlCode,
1207 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1208 [ in ] uint32 nInBufferSize,
1209 [ out, size_is(nOutBufferSize),
1210 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1211 [ in ] uint32 nOutBufferSize,
1212 [ out ] uint32 *lpBytesReturned,
1213 [ out ] uint32 *lpcbRequired,
1214 [ out ] WERROR *rpc_status
1217 /*****************/
1218 /* Function 0x4C */
1220 WERROR
1221 clusapi_NodeGroupControl(
1222 [ in ] HGROUP_RPC hGroup,
1223 [ in ] HNODE_RPC hNode,
1224 [ in ] uint32 dwControlCode,
1225 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1226 [ in ] uint32 nInBufferSize,
1227 [ out, size_is(nOutBufferSize),
1228 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1229 [ in ] uint32 nOutBufferSize,
1230 [ out ] uint32 *lpBytesReturned,
1231 [ out ] uint32 *lpcbRequired,
1232 [ out ] WERROR *rpc_status
1235 /*****************/
1236 /* Function 0x4D */
1238 typedef [v1_enum] enum {
1239 CLUSCTL_GROUP_UNKNOWN = 0x03000000,
1240 CLUSCTL_GROUP_GET_CHARACTERISTICS = 0x03000005,
1241 CLUSCTL_GROUP_GET_FLAGS = 0x03000009,
1242 CLUSCTL_GROUP_GET_NAME = 0x03000029,
1243 CLUSCTL_GROUP_GET_ID = 0x03000039,
1244 CLUSCTL_GROUP_ENUM_COMMON_PROPERTIES = 0x03000051,
1245 CLUSCTL_GROUP_GET_RO_COMMON_PROPERTIES = 0x03000055,
1246 CLUSCTL_GROUP_GET_COMMON_PROPERTIES = 0x03000059,
1247 CLUSCTL_GROUP_SET_COMMON_PROPERTIES = 0x0340005E,
1248 CLUSCTL_GROUP_VALIDATE_COMMON_PROPERTIES = 0x03000061,
1249 CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS = 0x03000065,
1250 CLUSCTL_GROUP_ENUM_PRIVATE_PROPERTIES = 0x03000079,
1251 CLUSCTL_GROUP_GET_RO_PRIVATE_PROPERTIES = 0x0300007D,
1252 CLUSCTL_GROUP_GET_PRIVATE_PROPERTIES = 0x03000081,
1253 CLUSCTL_GROUP_SET_PRIVATE_PROPERTIES = 0x03400086,
1254 CLUSCTL_GROUP_VALIDATE_PRIVATE_PROPERTIES = 0x03000089
1255 } clusapi_GroupControlCode;
1257 WERROR
1258 clusapi_GroupControl(
1259 [ in ] HGROUP_RPC hGroup,
1260 [ in ] clusapi_GroupControlCode dwControlCode,
1261 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1262 [ in ] uint32 nInBufferSize,
1263 [ out, size_is(nOutBufferSize),
1264 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1265 [ in ] uint32 nOutBufferSize,
1266 [ out ] uint32 *lpBytesReturned,
1267 [ out ] uint32 *lpcbRequired,
1268 [ out ] WERROR *rpc_status
1271 /*****************/
1272 /* Function 0x4E */
1274 WERROR
1275 clusapi_NodeNodeControl(
1276 [ in ] HNODE_RPC hNode,
1277 [ in ] HNODE_RPC hHostNode,
1278 [ in ] uint32 dwControlCode,
1279 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1280 [ in ] uint32 nInBufferSize,
1281 [ out, size_is(nOutBufferSize),
1282 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1283 [ in ] uint32 nOutBufferSize,
1284 [ out ] uint32 *lpBytesReturned,
1285 [ out ] uint32 *lpcbRequired,
1286 [ out ] WERROR *rpc_status
1289 /*****************/
1290 /* Function 0x4F */
1292 typedef [v1_enum] enum {
1293 CLUSCTL_NODE_UNKNOWN = 0x04000000,
1294 CLUSCTL_NODE_GET_CHARACTERISTICS = 0x04000005,
1295 CLUSCTL_NODE_GET_FLAGS = 0x04000009,
1296 CLUSCTL_NODE_GET_NAME = 0x04000029,
1297 CLUSCTL_NODE_GET_ID = 0x04000039,
1298 CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME = 0x04000041,
1299 CLUSCTL_NODE_ENUM_COMMON_PROPERTIES = 0x04000051,
1300 CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES = 0x04000055,
1301 CLUSCTL_NODE_GET_COMMON_PROPERTIES = 0x04000059,
1302 CLUSCTL_NODE_SET_COMMON_PROPERTIES = 0x0440005E,
1303 CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES = 0x04000061,
1304 CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES = 0x04000079,
1305 CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES = 0x0400007D,
1306 CLUSCTL_NODE_GET_PRIVATE_PROPERTIES = 0x04000081,
1307 CLUSCTL_NODE_SET_PRIVATE_PROPERTIES = 0x04400086,
1308 CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES = 0x04000089
1309 } clusapi_NodeControlCode;
1311 WERROR
1312 clusapi_NodeControl(
1313 [ in ] HNODE_RPC hNode,
1314 [ in ] clusapi_NodeControlCode dwControlCode,
1315 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1316 [ in ] uint32 nInBufferSize,
1317 [ out, size_is(nOutBufferSize),
1318 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1319 [ in ] uint32 nOutBufferSize,
1320 [ out ] uint32 *lpBytesReturned,
1321 [ out ] uint32 *lpcbRequired,
1322 [ out ] WERROR *rpc_status
1325 /*****************/
1326 /* Function 0x50 */
1328 WERROR
1329 Opnum80NotUsedOnWire(void);
1331 /*****************/
1332 /* Function 0x51 */
1333 #if 0
1334 HNETWORK_RPC
1335 clusapi_OpenNetwork(
1336 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1337 [ out ] WERROR *Status,
1338 [ out ] WERROR *rpc_status
1340 #else
1341 void
1342 clusapi_OpenNetwork(
1343 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1344 [ out ] WERROR *Status,
1345 [ out ] WERROR *rpc_status,
1346 [ out ] HNETWORK_RPC *hNetwork
1348 #endif
1349 /*****************/
1350 /* Function 0x52 */
1352 WERROR
1353 clusapi_CloseNetwork(
1354 [ in, out ] HNETWORK_RPC *Network
1357 /*****************/
1358 /* Function 0x53 */
1360 typedef [v1_enum] enum {
1361 ClusterNetworkUnavailable = 0x00000000,
1362 ClusterNetworkDown = 0x00000001,
1363 ClusterNetworkPartitioned = 0x00000002,
1364 ClusterNetworkUp = 0x00000003,
1365 ClusterNetworkStateUnknown = 0xFFFFFFFF
1366 } clusapi_ClusterNetworkState;
1368 WERROR
1369 clusapi_GetNetworkState(
1370 [ in ] HNETWORK_RPC hNetwork,
1371 [ out ] clusapi_ClusterNetworkState *State,
1372 [ out ] WERROR *rpc_status
1375 /*****************/
1376 /* Function 0x54 */
1378 WERROR
1379 clusapi_SetNetworkName(
1380 [ in ] HNETWORK_RPC hNetwork,
1381 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1382 [ out ] WERROR *rpc_status
1385 /*****************/
1386 /* Function 0x55 */
1388 WERROR
1389 clusapi_CreateNetworkEnum(
1390 [ in ] HNETWORK_RPC hNetwork,
1391 [ in ] uint32 dwType,
1392 [ out ] ENUM_LIST **ReturnEnum,
1393 [ out ] WERROR *rpc_status
1396 /*****************/
1397 /* Function 0x56 */
1399 WERROR
1400 clusapi_GetNetworkId(
1401 [ in ] HNETWORK_RPC hNetwork,
1402 [ out, string ] [charset(UTF16)] uint16 **pGuid,
1403 [ out ] WERROR *rpc_status
1406 /*****************/
1407 /* Function 0x57 */
1409 WERROR
1410 clusapi_SetNetworkPriorityOrder(
1411 [ in, range(0, 1000)] uint32 NetworkCount,
1412 [ in, string, size_is(NetworkCount) ] [charset(UTF16)] uint16 NetworkIdList[*],
1413 [ out ] WERROR *rpc_status
1416 /*****************/
1417 /* Function 0x58 */
1419 WERROR
1420 clusapi_NodeNetworkControl(
1421 [ in ] HNETWORK_RPC hNetwork,
1422 [ in ] HNODE_RPC hNode,
1423 [ in ] uint32 dwControlCode,
1424 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1425 [ in ] uint32 nInBufferSize,
1426 [ out, size_is(nOutBufferSize),
1427 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1428 [ in ] uint32 nOutBufferSize,
1429 [ out ] uint32 *lpBytesReturned,
1430 [ out ] uint32 *lpcbRequired,
1431 [ out ] WERROR *rpc_status
1434 /*****************/
1435 /* Function 0x59 */
1437 WERROR
1438 clusapi_NetworkControl(
1439 [ in ] HNETWORK_RPC hNetwork,
1440 [ in ] uint32 dwControlCode,
1441 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1442 [ in ] uint32 nInBufferSize,
1443 [ out, size_is(nOutBufferSize),
1444 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1445 [ in ] uint32 nOutBufferSize,
1446 [ out ] uint32 *lpBytesReturned,
1447 [ out ] uint32 *lpcbRequired,
1448 [ out ] WERROR *rpc_status
1451 /*****************/
1452 /* Function 0x5A */
1454 WERROR
1455 clusapi_AddNotifyNetwork(
1456 [ in ] HNOTIFY_RPC hNotify,
1457 [ in ] HNETWORK_RPC hNetwork,
1458 [ in ] uint32 dwFilter,
1459 [ in ] uint32 dwNotifyKey,
1460 [ out ] uint32 *dwStateSequence,
1461 [ out ] WERROR *rpc_status
1464 /*****************/
1465 /* Function 0x5B */
1467 WERROR
1468 clusapi_ReAddNotifyNetwork(
1469 [ in ] HNOTIFY_RPC hNotify,
1470 [ in ] HNETWORK_RPC hNetwork,
1471 [ in ] uint32 dwFilter,
1472 [ in ] uint32 dwNotifyKey,
1473 [ in ] uint32 StateSequence,
1474 [ out ] WERROR *rpc_status
1477 /*****************/
1478 /* Function 0x5C */
1479 #if 0
1480 HNETINTERFACE_RPC
1481 clusapi_OpenNetInterface(
1482 [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1483 [ out ] WERROR *Status,
1484 [ out ] WERROR *rpc_status
1486 #else
1487 void
1488 clusapi_OpenNetInterface(
1489 [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1490 [ out ] WERROR *Status,
1491 [ out ] WERROR *rpc_status,
1492 [ out ] HNETINTERFACE_RPC *hNetInterface
1494 #endif
1495 /*****************/
1496 /* Function 0x5D */
1498 WERROR
1499 clusapi_CloseNetInterface(
1500 [ in, out ] HNETINTERFACE_RPC *NetInterface
1503 /*****************/
1504 /* Function 0x5E */
1506 typedef [v1_enum] enum {
1507 ClusterNetInterfaceFailed = 0x00000000,
1508 ClusterNetInterfaceUnreachable = 0x00000001,
1509 ClusterNetInterfaceUnavailable = 0x00000002,
1510 ClusterNetInterfaceUp = 0x00000003,
1511 ClusterNetInterfaceStateUnknown = 0xFFFFFFFF
1512 } clusapi_ClusterNetInterfaceState;
1514 WERROR
1515 clusapi_GetNetInterfaceState(
1516 [ in ] HNETINTERFACE_RPC hNetInterface,
1517 [ out ] clusapi_ClusterNetInterfaceState *State,
1518 [ out ] WERROR *rpc_status
1521 /*****************/
1522 /* Function 0x5F */
1524 WERROR
1525 clusapi_GetNetInterface(
1526 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1527 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1528 [ out, string ] [charset(UTF16)] uint16 **lppszInterfaceName,
1529 [ out ] WERROR *rpc_status
1532 /*****************/
1533 /* Function 0x60 */
1535 WERROR
1536 clusapi_GetNetInterfaceId(
1537 [ in ] HNETINTERFACE_RPC hNetInterface,
1538 [ out, string ] [charset(UTF16)] uint16 **pGuid,
1539 [ out ] WERROR *rpc_status
1542 /*****************/
1543 /* Function 0x61 */
1545 WERROR
1546 clusapi_NodeNetInterfaceControl(
1547 [ in ] HNETINTERFACE_RPC hNetInterface,
1548 [ in ] HNODE_RPC hNode,
1549 [ in ] uint32 dwControlCode,
1550 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1551 [ in ] uint32 nInBufferSize,
1552 [ out, size_is(nOutBufferSize),
1553 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1554 [ in ] uint32 nOutBufferSize,
1555 [ out ] uint32 *lpBytesReturned,
1556 [ out ] uint32 *lpcbRequired,
1557 [ out ] WERROR *rpc_status
1560 /*****************/
1561 /* Function 0x62 */
1563 WERROR
1564 clusapi_NetInterfaceControl(
1565 [ in ] HNETINTERFACE_RPC hNetInterface,
1566 [ in ] uint32 dwControlCode,
1567 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1568 [ in ] uint32 nInBufferSize,
1569 [ out, size_is(nOutBufferSize),
1570 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1571 [ in ] uint32 nOutBufferSize,
1572 [ out ] uint32 *lpBytesReturned,
1573 [ out ] uint32 *lpcbRequired,
1574 [ out ] WERROR *rpc_status
1577 /*****************/
1578 /* Function 0x63 */
1580 WERROR
1581 clusapi_AddNotifyNetInterface(
1582 [ in ] HNOTIFY_RPC hNotify,
1583 [ in ] HNETINTERFACE_RPC hNetInterface,
1584 [ in ] uint32 dwFilter,
1585 [ in ] uint32 dwNotifyKey,
1586 [ out ] uint32 *dwStateSequence,
1587 [ out ] WERROR *rpc_status
1590 /*****************/
1591 /* Function 0x64 */
1593 WERROR
1594 clusapi_ReAddNotifyNetInterface(
1595 [ in ] HNOTIFY_RPC hNotify,
1596 [ in ] HNETINTERFACE_RPC hNetInterface,
1597 [ in ] uint32 dwFilter,
1598 [ in ] uint32 dwNotifyKey,
1599 [ in ] uint32 StateSequence,
1600 [ out ] WERROR *rpc_status
1603 /*****************/
1604 /* Function 0x65 */
1606 WERROR
1607 clusapi_CreateNodeEnum(
1608 [ in ] HNODE_RPC hNode,
1609 [ in ] uint32 dwType,
1610 [ out ] ENUM_LIST **ReturnEnum,
1611 [ out ] WERROR *rpc_status
1614 /*****************/
1615 /* Function 0x66 */
1617 WERROR
1618 clusapi_GetClusterVersion2(
1619 [ out ] uint16 *lpwMajorVersion,
1620 [ out ] uint16 *lpwMinorVersion,
1621 [ out ] uint16 *lpwBuildNumber,
1622 [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
1623 [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion,
1624 [ out ] CLUSTER_OPERATIONAL_VERSION_INFO **ppClusterOpVerInfo,
1625 [ out ] WERROR *rpc_status
1628 /*****************/
1629 /* Function 0x67 */
1631 typedef [bitmap32bit] bitmap {
1632 CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001,
1633 CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES = 0x00000002
1634 } ClusterResTypeEnumType;
1636 WERROR
1637 clusapi_CreateResTypeEnum(
1638 [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
1639 [ in ] ClusterResTypeEnumType dwType,
1640 [ out ] ENUM_LIST **ReturnEnum,
1641 [ out ] WERROR *rpc_status
1644 /*****************/
1645 /* Function 0x68 */
1647 WERROR
1648 clusapi_BackupClusterDatabase(
1649 [ in, string ] [charset(UTF16)] uint16 *lpszPathName,
1650 [ out ] WERROR *rpc_status
1653 /*****************/
1654 /* Function 0x69 */
1656 WERROR
1657 clusapi_NodeClusterControl(
1658 [ in ] HCLUSTER_RPC hCluster,
1659 [ in ] HNODE_RPC hHostNode,
1660 [ in ] uint32 dwControlCode,
1661 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1662 [ in ] uint32 nInBufferSize,
1663 [ out, size_is(nOutBufferSize),
1664 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1665 [ in ] uint32 nOutBufferSize,
1666 [ out ] uint32 *lpBytesReturned,
1667 [ out ] uint32 *lpcbRequired,
1668 [ out ] WERROR *rpc_status
1671 /*****************/
1672 /* Function 0x6A */
1674 typedef [v1_enum] enum {
1675 CLUSCTL_CLUSTER_UNKNOWN = 0x07000000,
1676 CLUSCTL_CLUSTER_GET_FQDN = 0x0700003D,
1677 CLUSCTL_CLUSTER_CHECK_VOTER_EVICT = 0x07000045,
1678 CLUSCTL_CLUSTER_CHECK_VOTER_DOWN = 0x07000049,
1679 CLUSCTL_CLUSTER_SHUTDOWN = 0x0700004D,
1680 CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES = 0x07000051,
1681 CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES = 0x07000055,
1682 CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES = 0x07000059,
1683 CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES = 0x0740005E,
1684 CLUSCTL_CLUSTER_VALIDATE_COMMON_PROPERTIES = 0x07000061,
1685 CLUSCTL_CLUSTER_GET_COMMON_PROPERTY_FMTS = 0x07000065,
1686 CLUSCTL_CLUSTER_ENUM_PRIVATE_PROPERTIES = 0x07000079,
1687 CLUSCTL_CLUSTER_GET_RO_PRIVATE_PROPERTIES = 0x0700007D,
1688 CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTIES = 0x07000081,
1689 CLUSCTL_CLUSTER_SET_PRIVATE_PROPERTIES = 0x07400086,
1690 CLUSCTL_CLUSTER_VALIDATE_PRIVATE_PROPERTIES = 0x07000089,
1691 CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID = 0x07000291,
1692 CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION = 0x074000ce,
1693 CLUSCTL_CLUSTER_CLEAR_UPGRADE_IN_PROGRESS = 0x074000d2,
1694 CLUSCTL_CLUSTER_IS_READY_FOR_UPGRADE = 0x070000d5
1695 } clusapi_ClusterControlCode;
1697 typedef [v1_enum] enum {
1698 CLUSPROP_SYNTAX_ENDMARK = 0x00000000,
1699 CLUSPROP_SYNTAX_NAME = 0x00040003,
1700 CLUSPROP_SYNTAX_RESCLASS = 0x00020002,
1701 CLUSPROP_SYNTAX_LIST_VALUE_SZ = 0x00010003,
1702 CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = 0x00010004,
1703 CLUSPROP_SYNTAX_LIST_VALUE_DWORD = 0x00010002,
1704 CLUSPROP_SYNTAX_LIST_VALUE_BINARY = 0x00010001,
1705 CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = 0x00010005,
1706 CLUSPROP_SYNTAX_LIST_VALUE_LONG = 0x00010007,
1707 CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = 0x00010008,
1708 CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = 0x00010009,
1709 CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = 0x0001000a,
1710 CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = 0x00010006,
1711 CLUSPROP_SYNTAX_LIST_VALUE_WORD = 0x0001000b,
1712 CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = 0x0001000c,
1713 CLUSPROP_SYNTAX_DISK_SIGNATURE = 0x00050002,
1714 CLUSPROP_SYNTAX_SCSI_ADDRESS = 0x00060002,
1715 CLUSPROP_SYNTAX_DISK_NUMBER = 0x00070002,
1716 CLUSPROP_SYNTAX_PARTITION_INFO = 0x00080001,
1717 CLUSPROP_SYNTAX_DISK_SERIALNUMBER = 0x000a0003,
1718 CLUSPROP_SYNTAX_DISK_GUID = 0x000b0003,
1719 CLUSPROP_SYNTAX_DISK_SIZE = 0x000c0006,
1720 CLUSPROP_SYNTAX_PARTITION_INFO_EX = 0x000d0001
1721 } CLUSTER_PROPERTY_SYNTAX;
1723 typedef struct {
1724 CLUSTER_PROPERTY_SYNTAX Syntax;
1725 uint32 Size;
1726 [subcontext(0),subcontext_size(Size)] [flag(NDR_REMAINING)] DATA_BLOB Buffer;
1727 [flag(NDR_ALIGN4)] DATA_BLOB Padding;
1728 } clusapi_propertyValues;
1730 typedef struct {
1731 [value(CLUSPROP_SYNTAX_NAME)] CLUSTER_PROPERTY_SYNTAX syntax_name;
1732 [value(strlen_m_term(buffer)*2)] uint32 size;
1733 nstring buffer;
1734 [flag(NDR_ALIGN2)] DATA_BLOB padding;
1735 clusapi_propertyValues PropertyValues;
1736 [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
1737 } clusapi_propertyValue;
1739 typedef [public] struct {
1740 uint32 propertyCount;
1741 clusapi_propertyValue propertyValues[propertyCount];
1742 [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
1743 } clusapi_PROPERTY_LIST;
1745 WERROR
1746 clusapi_ClusterControl(
1747 [ in ] HCLUSTER_RPC hCluster,
1748 [ in ] clusapi_ClusterControlCode dwControlCode,
1749 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
1750 [ in ] uint32 nInBufferSize,
1751 [ out, size_is(nOutBufferSize),
1752 length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
1753 [ in ] uint32 nOutBufferSize,
1754 [ out ] uint32 *lpBytesReturned,
1755 [ out ] uint32 *lpcbRequired,
1756 [ out ] WERROR *rpc_status
1759 /*****************/
1760 /* Function 0x6B */
1762 WERROR
1763 clusapi_UnblockGetNotifyCall(
1764 [ in ] HNOTIFY_RPC hNotify
1767 /*****************/
1768 /* Function 0x6C */
1770 WERROR
1771 clusapi_SetServiceAccountPassword(
1772 [ in, string ] [charset(UTF16)] uint16 *lpszNewPassword,
1773 [ in ] IDL_CLUSTER_SET_PASSWORD_FLAGS dwFlags,
1774 [ out, size_is(ReturnStatusBufferSize), length_is(*SizeReturned) ]
1775 IDL_CLUSTER_SET_PASSWORD_STATUS ReturnStatusBufferPtr[*],
1776 [ in, range(0, (64 * 1024)) ] uint32 ReturnStatusBufferSize,
1777 [ out ] uint32 *SizeReturned,
1778 [ out ] uint32 *ExpectedBufferSize
1781 /*****************/
1782 /* Function 0x6D */
1784 WERROR
1785 clusapi_SetResourceDependencyExpression(
1786 [ in ] HRES_RPC hResource,
1787 [ in, string, unique ] [charset(UTF16)] uint16 *lpszDependencyExpression,
1788 [ out ] WERROR *rpc_status
1791 /*****************/
1792 /* Function 0x6E */
1794 WERROR
1795 clusapi_GetResourceDependencyExpression(
1796 [ in ] HRES_RPC hResource,
1797 [ out, string ] [charset(UTF16)] uint16 **lpszDependencyExpression,
1798 [ out ] WERROR *rpc_status
1801 /*****************/
1802 /* Function 0x6F */
1804 WERROR
1805 Opnum111NotUsedOnWire(void);
1807 /*****************/
1808 /* Function 0x70 */
1810 WERROR
1811 clusapi_GetResourceNetworkName(
1812 [ in ] HRES_RPC hResource,
1813 [ out, string ] [charset(UTF16)] uint16 **lpszName,
1814 [ out ] WERROR *rpc_status
1817 /*****************/
1818 /* Function 0x71 */
1820 WERROR
1821 clusapi_ExecuteBatch(
1822 [ in ] HKEY_RPC hKey,
1823 [ in ] uint32 cbData,
1824 [ in, size_is(cbData)] uint8 *lpData,
1825 [ out ] int *pdwFailedCommand,
1826 [ out ] WERROR *rpc_status
1829 /*****************/
1830 /* Function 0x72 */
1832 WERROR
1833 clusapi_CreateBatchPort(
1834 [ in ] HKEY_RPC hKey,
1835 [ out ] HBATCH_PORT_RPC *phBatchPort,
1836 [ out ] WERROR *rpc_status
1839 /*****************/
1840 /* Function 0x73 */
1842 WERROR
1843 clusapi_GetBatchNotification(
1844 [ in ] HBATCH_PORT_RPC hBatchNotify,
1845 [ out ] uint32 *cbData,
1846 [ out, size_is(,*cbData) ] uint8 ** lpData
1849 /*****************/
1850 /* Function 0x74 */
1852 WERROR
1853 clusapi_CloseBatchPort(
1854 [ in, out ] HBATCH_PORT_RPC *phBatchPort
1857 /*****************/
1858 /* Function 0x75 */
1860 typedef [bitmap32bit] bitmap {
1861 CLUSAPI_READ_ACCESS = 0x00000001,
1862 CLUSAPI_CHANGE_ACCESS = 0x00000002,
1863 CLUSAPI_GENERIC_READ = 0x80000000,
1864 CLUSAPI_GENERIC_WRITE = 0x40000000,
1865 CLUSAPI_GENERIC_EXECUTE = 0x20000000,
1866 CLUSAPI_GENERIC_ALL = 0x10000000,
1867 CLUSAPI_MAXIMUM_ALLOWED = 0x02000000
1868 } clusapi_DesiredAccessMask;
1870 #if 0
1871 HCLUSTER_RPC
1872 clusapi_OpenClusterEx(
1873 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1874 [ out ] uint32 *lpdwGrantedAccess,
1875 [ out ] WERROR *Status
1877 #else
1878 void
1879 clusapi_OpenClusterEx(
1880 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1881 [ out ] uint32 *lpdwGrantedAccess,
1882 [ out ] WERROR *Status,
1883 [ out ] HCLUSTER_RPC *hCluster
1885 #endif
1887 /*****************/
1888 /* Function 0x76 */
1889 #if 0
1890 HNODE_RPC
1891 clusapi_OpenNodeEx(
1892 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1893 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1894 [ out ] uint32 *lpdwGrantedAccess,
1895 [ out ] WERROR *Status,
1896 [ out ] WERROR *rpc_status
1898 #else
1899 void
1900 clusapi_OpenNodeEx(
1901 [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
1902 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1903 [ out ] uint32 *lpdwGrantedAccess,
1904 [ out ] WERROR *Status,
1905 [ out ] WERROR *rpc_status,
1906 [ out ] HNODE_RPC *hNode
1908 #endif
1909 /*****************/
1910 /* Function 0x77 */
1911 #if 0
1912 HGROUP_RPC
1913 clusapi_OpenGroupEx(
1914 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
1915 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1916 [ out ] uint32 *lpdwGrantedAccess,
1917 [ out ] WERROR *Status,
1918 [ out ] WERROR *rpc_status
1920 #else
1921 void
1922 clusapi_OpenGroupEx(
1923 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
1924 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1925 [ out ] uint32 *lpdwGrantedAccess,
1926 [ out ] WERROR *Status,
1927 [ out ] WERROR *rpc_status,
1928 [ out ] HGROUP_RPC *hGroup
1930 #endif
1931 /*****************/
1932 /* Function 0x78 */
1933 #if 0
1934 HRES_RPC
1935 clusapi_OpenResourceEx(
1936 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
1937 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1938 [ out ] uint32 *lpdwGrantedAccess,
1939 [ out ] WERROR *Status,
1940 [ out ] WERROR *rpc_status
1942 #else
1943 void
1944 clusapi_OpenResourceEx(
1945 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
1946 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1947 [ out ] uint32 *lpdwGrantedAccess,
1948 [ out ] WERROR *Status,
1949 [ out ] WERROR *rpc_status,
1950 [ out ] HRES_RPC *hResource
1952 #endif
1953 /*****************/
1954 /* Function 0x79 */
1955 #if 0
1956 HNETWORK_RPC
1957 clusapi_OpenNetworkEx(
1958 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1959 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1960 [ out ] uint32 *lpdwGrantedAccess,
1961 [ out ] WERROR *Status,
1962 [ out ] WERROR *rpc_status
1964 #else
1965 void
1966 clusapi_OpenNetworkEx(
1967 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
1968 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1969 [ out ] uint32 *lpdwGrantedAccess,
1970 [ out ] WERROR *Status,
1971 [ out ] WERROR *rpc_status,
1972 [ out ] HNETWORK_RPC *hNetwork
1974 #endif
1975 /*****************/
1976 /* Function 0x7A */
1977 #if 0
1978 HNETINTERFACE_RPC
1979 clusapi_OpenNetInterfaceEx(
1980 [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1981 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1982 [ out ] uint32 *lpdwGrantedAccess,
1983 [ out ] WERROR *Status,
1984 [ out ] WERROR *rpc_status
1986 #else
1987 void
1988 clusapi_OpenNetInterfaceEx(
1989 [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
1990 [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
1991 [ out ] uint32 *lpdwGrantedAccess,
1992 [ out ] WERROR *Status,
1993 [ out ] WERROR *rpc_status,
1994 [ out ] HNETINTERFACE_RPC *hNetInterface
1996 #endif
1997 /*****************/
1998 /* Function 0x7B */
2000 WERROR
2001 clusapi_ChangeCsvState(
2002 [ in ] HRES_RPC hResource,
2003 [ in ] uint32 dwState,
2004 [ out ] WERROR *rpc_status
2007 /*****************/
2008 /* Function 0x7C */
2010 WERROR
2011 clusapi_CreateNodeEnumEx(
2012 [in] HNODE_RPC hNode,
2013 [in] uint32 dwType,
2014 [in] uint32 dwOptions,
2015 [out] ENUM_LIST **ReturnIdEnum,
2016 [out] ENUM_LIST **ReturnNameEnum,
2017 [out] WERROR* rpc_status
2020 /*****************/
2021 /* Function 0x7D */
2023 WERROR
2024 clusapi_CreateEnumEx(
2025 [in] HCLUSTER_RPC hCluster,
2026 [in] ClusterEnumType dwType,
2027 [in] uint32 dwOptions,
2028 [out] ENUM_LIST **ReturnIdEnum,
2029 [out] ENUM_LIST **ReturnNameEnum,
2030 [out] WERROR* rpc_status
2033 /*****************/
2034 /* Function 0x7E */
2036 WERROR
2037 clusapi_PauseNodeEx(
2038 [ in ] HNODE_RPC hNode,
2039 [ in ] boolean8 bDrainNode,
2040 [ in ] uint32 dwPauseFlags,
2041 [ out ] WERROR *rpc_status
2044 /*****************/
2045 /* Function 0x7F */
2047 WERROR
2048 clusapi_PauseNodeWithDrainTarget(
2049 [ in ] HNODE_RPC hNode,
2050 [ in ] uint32 dwPauseFlags,
2051 [ in ] HNODE_RPC hNodeDrainTarget,
2052 [ out ] WERROR *rpc_status
2055 /*****************/
2056 /* Function 0x80 */
2058 WERROR
2059 clusapi_ResumeNodeEx(
2060 [ in ] HNODE_RPC hNode,
2061 [ in ] uint32 dwResumeFailbackType,
2062 [ in ] uint32 dwResumeFlagsReserved,
2063 [ out ] WERROR *rpc_status
2066 /*****************/
2067 /* Function 0x81 */
2068 #if 0
2069 HGROUP_RPC
2070 clusapi_CreateGroupEx(
2071 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
2072 [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
2073 [ out ] WERROR *Status,
2074 [ out ] WERROR *rpc_status
2076 #else
2077 void
2078 clusapi_CreateGroupEx(
2079 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
2080 [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
2081 [ out ] WERROR *Status,
2082 [ out ] WERROR *rpc_status,
2083 [ out ] HGROUP_RPC *hGroup
2085 #endif
2086 /*****************/
2087 /* Function 0x82 */
2089 WERROR
2090 clusapi_OnlineGroupEx(
2091 [ in ] HGROUP_RPC hGroup,
2092 [ in ] uint32 dwOnlineFlags,
2093 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2094 [ in ] uint32 cbInBufferSize,
2095 [ out ] WERROR *rpc_status
2098 /*****************/
2099 /* Function 0x83 */
2101 WERROR
2102 clusapi_OfflineGroupEx(
2103 [ in ] HGROUP_RPC hGroup,
2104 [ in ] uint32 dwOfflineFlags,
2105 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2106 [ in ] uint32 cbInBufferSize,
2107 [ out ] WERROR *rpc_status
2110 /*****************/
2111 /* Function 0x84 */
2113 WERROR
2114 clusapi_MoveGroupEx(
2115 [ in ] HGROUP_RPC hGroup,
2116 [ in ] uint32 dwMoveFlags,
2117 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2118 [ in ] uint32 cbInBufferSize,
2119 [ out ] WERROR *rpc_status
2122 /*****************/
2123 /* Function 0x85 */
2125 WERROR
2126 clusapi_MoveGroupToNodeEx(
2127 [ in ] HGROUP_RPC hGroup,
2128 [ in ] HNODE_RPC hNode,
2129 [ in ] uint32 dwMoveFlags,
2130 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2131 [ in ] uint32 cbInBufferSize,
2132 [ out ] WERROR *rpc_status
2135 /*****************/
2136 /* Function 0x86 */
2138 WERROR
2139 clusapi_CancelClusterGroupOperation(
2140 [ in ] HGROUP_RPC hGroup,
2141 [ in ] uint32 dwCancelFlags,
2142 [ out ] WERROR *rpc_status
2145 /*****************/
2146 /* Function 0x87 */
2148 WERROR
2149 clusapi_OnlineResourceEx(
2150 [ in ] HRES_RPC hResource,
2151 [ in ] uint32 dwOnlineFlags,
2152 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2153 [ in ] uint32 cbInBufferSize,
2154 [ out ] WERROR *rpc_status
2157 /*****************/
2158 /* Function 0x88 */
2160 WERROR
2161 clusapi_OfflineResourceEx(
2162 [ in ] HRES_RPC hResource,
2163 [ in ] uint32 dwOfflineFlags,
2164 [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
2165 [ in ] uint32 cbInBufferSize,
2166 [ out ] WERROR *rpc_status
2169 #define HGENERIC_RPC policy_handle
2170 #if 0
2171 typedef [context_handle] void *HGENERIC_RPC;
2172 #endif
2174 typedef struct {
2175 uint32 dwObjectType; /* really of type CLUSTER_OBJECT_TYPE_RPC */
2176 hyper FilterFlags;
2177 } NOTIFY_FILTER_AND_TYPE_RPC;
2179 typedef struct {
2180 NOTIFY_FILTER_AND_TYPE_RPC FilterAndType;
2181 [ size_is(dwBufferSize ) ] uint8* buffer;
2182 uint32 dwBufferSize;
2183 [string] [charset(UTF16)] uint16 *ObjectId;
2184 [string] [charset(UTF16)] uint16 *ParentId;
2185 [string] [charset(UTF16)] uint16 *Name;
2186 [string] [charset(UTF16)] uint16 *Type;
2187 } NOTIFICATION_DATA_RPC;
2189 typedef struct {
2190 uint32 *dwNotifyKey;
2191 NOTIFICATION_DATA_RPC NotificationData;
2192 } NOTIFICATION_RPC;
2194 /*****************/
2195 /* Function 0x89 */
2198 * Notify interface V2 functions
2200 #if 0
2201 HNOTIFY_RPC
2202 clusapi_CreateNotifyV2(
2203 [ out ] WERROR *rpc_error,
2204 [ out ] WERROR *rpc_status
2206 #else
2207 void
2208 clusapi_CreateNotifyV2(
2209 [ out ] WERROR *rpc_error,
2210 [ out ] WERROR *rpc_status,
2211 [ out ] HNOTIFY_RPC *hNotify
2214 #endif
2215 /*****************/
2216 /* Function 0x8A */
2218 WERROR
2219 clusapi_AddNotifyV2(
2220 [ in ] HNOTIFY_RPC hNotify,
2221 [ in ] HGENERIC_RPC hObject,
2222 [ in ] NOTIFY_FILTER_AND_TYPE_RPC filter,
2223 [ in ] uint32 dwNotifyKey,
2224 [ in ] uint32 dwVersion,
2225 [ in ] boolean8 isTargetedAtObject,
2226 [ out ] WERROR *rpc_status
2229 /*****************/
2230 /* Function 0x8B */
2232 WERROR
2233 clusapi_GetNotifyV2(
2234 [ in ] HNOTIFY_RPC hNotify,
2235 [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_RPC **Notifications,
2236 [ out ] uint32 *dwNumNotifications
2239 /*****************/
2240 /* Function 0x8C */
2242 WERROR
2243 clusapi_QueryAllValues(
2244 [ in ] HKEY_RPC hKey,
2245 [ out ] uint32 *pcbData,
2246 [ out, size_is(1, *pcbData) ] uint8 ** ppData,
2247 [ out ] WERROR *rpc_status
2250 typedef struct {
2251 uint32 DiskIdType;
2252 uint8 DiskIdBlob[16];
2253 } CLUSTER_DISKID;
2255 /*****************/
2256 /* Function 0x8D */
2258 WERROR
2259 clusapi_StmFindDisk(
2260 [ in ] HCLUSTER_RPC hCluster,
2261 [ in ] uint32 dwFlags,
2262 [ in, out, unique ] CLUSTER_DISKID *pDiskId,
2263 [ in, size_is(uniqueIdSize), unique ] uint8 *pUniqueId,
2264 [ in ] uint32 uniqueIdSize,
2265 [ out, ref, string ] [charset(UTF16)] uint16 **ppszDeviceName,
2266 [ out ] WERROR *rpc_status
2269 typedef struct{
2270 [string] [charset(UTF16)] uint16 *pszNodeName;
2271 HRESULT ResultCode;
2272 uint32 ResultSize;
2273 [unique, size_is(ResultSize)] uint8 *pResultData;
2274 } CLUSTER_MRR_NODE_RESPONSE;
2276 typedef struct {
2277 uint32 NodeCount;
2278 [size_is(NodeCount)] CLUSTER_MRR_NODE_RESPONSE *pNodes;
2279 } CLUSTER_MRR_RESPONSE;
2281 /*****************/
2282 /* Function 0x8E */
2284 WERROR
2285 clusapi_ClusterMrr(
2286 [ in ] HCLUSTER_RPC hCluster,
2287 [ in ] boolean8 fExcludeSelf,
2288 [ in ] hyper nodeSet,
2289 [ in ] uint32 dwTimeout,
2290 [ in ] uint32 dwComponent,
2291 [ in ] uint32 dwControlCode,
2292 [ in ] uint32 inSize,
2293 [ in, unique, size_is(inSize) ] uint8 *pInData,
2294 [ out, ref, size_is(1, 1) ] CLUSTER_MRR_RESPONSE **ppInfo,
2295 [ out ] WERROR *rpc_status
2298 /*****************/
2299 /* Function 0x8F */
2301 WERROR
2302 clusapi_CreateGroupEnum(
2303 [ in ] HCLUSTER_RPC hCluster,
2304 [ in, unique, size_is(cbProperties)] uint8* pProperties,
2305 [ in ] uint32 cbProperties,
2306 [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
2307 [ in ] uint32 cbRoProperties,
2308 [ out ] GROUP_ENUM_LIST **ppResultList,
2309 [ out ] WERROR *rpc_status
2312 /*****************/
2313 /* Function 0x90 */
2315 WERROR
2316 clusapi_CreateResourceEnum(
2317 [ in ] HCLUSTER_RPC hCluster,
2318 [ in, unique, size_is(cbProperties)] uint8* pProperties,
2319 [ in ] uint32 cbProperties,
2320 [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
2321 [ in ] uint32 cbRoProperties,
2322 [ out ] RESOURCE_ENUM_LIST **ppResultList,
2323 [ out ] WERROR *rpc_status
2326 /*****************/
2327 /* Function 0x91 */
2329 WERROR
2330 clusapi_ExecuteReadBatch(
2331 [ in ] HKEY_RPC hKey,
2332 [ in ] uint32 cbInData,
2333 [ in, size_is(cbInData)] uint8 *lpInData,
2334 [ out ] uint32 *cbOutData,
2335 [ out, size_is(,*cbOutData) ] uint8 ** lpOutData,
2336 [ out ] WERROR *rpc_status
2339 /*****************/
2340 /* Function 0x92 */
2342 WERROR
2343 clusapi_RestartResource(
2344 [ in ] HRES_RPC hResource,
2345 [ in ] uint32 dwFlags,
2346 [ out ] WERROR *rpc_status
2349 typedef struct {
2350 uint32 dwNotifyKey;
2351 uint32 dwFilter;
2352 [string] [charset(UTF16)] uint16 *Name;
2353 } NOTIFICATION_DATA_ASYNC_RPC;
2355 /*****************/
2356 /* Function 0x93 */
2358 WERROR
2359 clusapi_GetNotifyAsync(
2360 [ in ] HNOTIFY_RPC hNotify,
2361 [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_DATA_ASYNC_RPC **Notifications,
2362 [ out ] uint32 *dwNumNotifications
2365 typedef enum {
2366 DiskIdSignature = 0x00000001,
2367 DiskIdGuid = 0x00000002,
2368 DiskIdUnKnown = 0x00001388
2369 } CLUSDSK_DISKID_ENUM;
2371 #if 0
2372 typedef struct {
2373 CLUSDSK_DISKID_ENUM DiskIdType;
2374 [switch_is(DiskIdType)] union {
2375 [case(DiskIdSignature)] uint32 DiskSignature;
2376 [case(DiskIdGuid)] GUID DiskGuid;
2378 } CLUSDSK_DISKID;
2379 #endif
2380 typedef enum {
2381 CLUSPROP_TYPE_ENDMARK = 0x0000,
2382 CLUSPROP_TYPE_LIST_VALUE = 0x0001,
2383 CLUSPROP_TYPE_RESCLASS = 0x0002,
2384 CLUSPROP_TYPE_NAME = 0x0004,
2385 CLUSPROP_TYPE_SIGNATURE = 0x0005,
2386 CLUSPROP_TYPE_SCSIADDRESS = 0x0006,
2387 CLUSPROP_TYPE_DISK_NUMBER = 0x0007,
2388 CLUSPROP_TYPE_PARTITION_INFO = 0x0008,
2389 CLUSPROP_TYPE_DISK_SERIALNUMBER = 0x000a,
2390 CLUSPROP_TYPE_DISK_GUID = 0x000b,
2391 CLUSPROP_TYPE_DISK_SIZE = 0x000c,
2392 CLUSPROP_TYPE_PARTITION_INFO_EX = 0x000d
2393 } CLUSTER_PROPERTY_TYPE;
2395 typedef enum {
2396 CLUSPROP_FORMAT_UNKNOWN = 0x0000,
2397 CLUSPROP_FORMAT_BINARY = 0x0001,
2398 CLUSPROP_FORMAT_DWORD = 0x0002,
2399 CLUSPROP_FORMAT_SZ = 0x0003,
2400 CLUSPROP_FORMAT_EXPAND_SZ = 0x0004,
2401 CLUSPROP_FORMAT_MULTI_SZ = 0x0005,
2402 CLUSPROP_FORMAT_ULARGE_INTEGER = 0x0006,
2403 CLUSPROP_FORMAT_LONG = 0x0007,
2404 CLUSPROP_FORMAT_EXPANDED_SZ = 0x0008,
2405 CLUSPROP_FORMAT_SECURITY_DESCRIPTOR = 0x0009,
2406 CLUSPROP_FORMAT_LARGE_INTEGER = 0x000a,
2407 CLUSPROP_FORMAT_WORD = 0x000b,
2408 CLUSPROP_FORMAT_FILETIME = 0x000c
2409 } CLUSTER_PROPERTY_FORMAT;
2411 typedef enum {
2412 CLUS_CHAR_UNKNOWN = 0x00000000,
2413 CLUS_CHAR_QUORUM = 0x00000001,
2414 CLUS_CHAR_DELETE_REQUIRES_ALL_NODES = 0x00000002,
2415 CLUS_CHAR_LOCAL_QUORUM = 0x00000004,
2416 CLUS_CHAR_BROADCAST_DELETE = 0x00000020,
2417 CLUS_CHAR_SINGLE_CLUSTER_INSTANCE = 0x00000040,
2418 CLUS_CHAR_SINGLE_GROUP_INSTANCE = 0x00000080,
2419 CLUS_CHAR_COEXIST_IN_SHARED_VOLUME_GROUP = 0x00000100,
2420 CLUS_CHAR_RESERVED1 = 0x00000200,
2421 CLUS_CHAR_MONITOR_DETACH = 0x00000400,
2422 CLUS_CHAR_RESERVED2 = 0x00000800,
2423 CLUS_CHAR_RESERVED3 = 0x00001000,
2424 CLUS_CHAR_RESERVED4 = 0x00002000
2425 } CLUS_CHARACTERISTICS;
2427 typedef enum {
2428 CLUS_FLAG_CORE = 0x00000001
2429 } CLUS_FLAGS;
2431 typedef enum {
2432 MaintenanceModeTypeDisableIsAliveCheck = 1,
2433 MaintenanceModeTypeOfflineResource = 2,
2434 MaintenanceModeTypeUnclusterResource = 3
2435 } MAINTENANCE_MODE_TYPE;
2437 typedef enum {
2438 CLUSTER_CHANGE_NODE_STATE = 0x00000001,
2439 CLUSTER_CHANGE_NODE_DELETED = 0x00000002,
2440 CLUSTER_CHANGE_NODE_ADDED = 0x00000004,
2441 CLUSTER_CHANGE_NODE_PROPERTY = 0x00000008,
2442 CLUSTER_CHANGE_REGISTRY_NAME = 0x00000010,
2443 CLUSTER_CHANGE_REGISTRY_ATTRIBUTES = 0x00000020,
2444 CLUSTER_CHANGE_REGISTRY_VALUE = 0x00000040,
2445 CLUSTER_CHANGE_REGISTRY_SUBTREE = 0x00000080,
2446 CLUSTER_CHANGE_RESOURCE_STATE = 0x00000100,
2447 CLUSTER_CHANGE_RESOURCE_DELETED = 0x00000200,
2448 CLUSTER_CHANGE_RESOURCE_ADDED = 0x00000400,
2449 CLUSTER_CHANGE_RESOURCE_PROPERTY = 0x00000800,
2450 CLUSTER_CHANGE_GROUP_STATE = 0x00001000,
2451 CLUSTER_CHANGE_GROUP_DELETED = 0x00002000,
2452 CLUSTER_CHANGE_GROUP_ADDED = 0x00004000,
2453 CLUSTER_CHANGE_GROUP_PROPERTY = 0x00008000,
2454 CLUSTER_CHANGE_RESOURCE_TYPE_DELETED = 0x00010000,
2455 CLUSTER_CHANGE_RESOURCE_TYPE_ADDED = 0x00020000,
2456 CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY = 0x00040000,
2457 CLUSTER_CHANGE_CLUSTER_RECONNECT = 0x00080000,
2458 CLUSTER_CHANGE_NETWORK_STATE = 0x00100000,
2459 CLUSTER_CHANGE_NETWORK_DELETED = 0x00200000,
2460 CLUSTER_CHANGE_NETWORK_ADDED = 0x00400000,
2461 CLUSTER_CHANGE_NETWORK_PROPERTY = 0x00800000,
2462 CLUSTER_CHANGE_NETINTERFACE_STATE = 0x01000000,
2463 CLUSTER_CHANGE_NETINTERFACE_DELETED = 0x02000000,
2464 CLUSTER_CHANGE_NETINTERFACE_ADDED = 0x04000000,
2465 CLUSTER_CHANGE_NETINTERFACE_PROPERTY = 0x08000000,
2466 CLUSTER_CHANGE_QUORUM_STATE = 0x10000000,
2467 CLUSTER_CHANGE_CLUSTER_STATE = 0x20000000,
2468 CLUSTER_CHANGE_CLUSTER_PROPERTY = 0x40000000,
2469 CLUSTER_CHANGE_HANDLE_CLOSE = 0x80000000
2470 } CLUSTER_CHANGE;
2472 typedef enum {
2473 CLUSREG_SET_VALUE = 1,
2474 CLUSREG_CREATE_KEY = 2,
2475 CLUSREG_DELETE_KEY = 3,
2476 CLUSREG_DELETE_VALUE = 4,
2477 CLUSREG_VALUE_DELETED = 6,
2478 CLUSREG_READ_KEY = 7,
2479 CLUSREG_READ_VALUE = 8,
2480 CLUSREG_READ_ERROR = 9
2481 } CLUSTER_REG_BATCH_COMMAND;
2482 #if 0
2483 typedef enum {
2484 IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
2485 } IDL_CLUSTER_SET_PASSWORD_FLAGS;
2486 #endif
2487 typedef enum {
2488 CLUSTER_QUORUM_MAINTAINED = 0,
2489 CLUSTER_QUORUM_LOST = 1
2490 } CLUSTER_QUORUM_VALUE;
2492 typedef enum {
2493 CLUSTER_OBJECT_TYPE_CLUSTER = 0x00000001,
2494 CLUSTER_OBJECT_TYPE_GROUP = 0x00000002,
2495 CLUSTER_OBJECT_TYPE_RESOURCE = 0x00000003,
2496 CLUSTER_OBJECT_TYPE_RESOURCE_TYPE = 0x00000004,
2497 CLUSTER_OBJECT_TYPE_NETWORK_INTERFACE = 0x00000005,
2498 CLUSTER_OBJECT_TYPE_NETWORK = 0x00000006,
2499 CLUSTER_OBJECT_TYPE_NODE = 0x00000007,
2500 CLUSTER_OBJECT_TYPE_REGISTRY = 0x00000008,
2501 CLUSTER_OBJECT_TYPE_QUORUM = 0x00000009,
2502 CLUSTER_OBJECT_TYPE_SHARED_VOLUME = 0x0000000a
2503 } CLUSTER_OBJECT_TYPE;
2505 typedef enum {
2506 CLUSTER_CHANGE_CLUSTER_RECONNECT_V2 = 0x00000001,
2507 CLUSTER_CHANGE_CLUSTER_STATE_V2 = 0x00000002,
2508 CLUSTER_CHANGE_CLUSTER_GROUP_ADDED_V2 = 0x00000004,
2509 CLUSTER_CHANGE_CLUSTER_HANDLE_CLOSE_V2 = 0x00000008,
2510 CLUSTER_CHANGE_CLUSTER_NETWORK_ADDED_V2 = 0x00000010,
2511 CLUSTER_CHANGE_CLUSTER_NODE_ADDED_V2 = 0x00000020,
2512 CLUSTER_CHANGE_CLUSTER_RESOURCE_TYPE_ADDED_V2 = 0x00000040,
2513 CLUSTER_CHANGE_CLUSTER_COMMON_PROPERTY_V2 = 0x00000080,
2514 CLUSTER_CHANGE_CLUSTER_PRIVATE_PROPERTY_V2 = 0x00000100,
2515 CLUSTER_CHANGE_CLUSTER_LOST_NOTIFICATIONS_V2 = 0x00000200,
2516 CLUSTER_CHANGE_CLUSTER_RENAME_V2 = 0x00000400
2517 } CLUSTER_CHANGE_CLUSTER_V2;
2519 typedef enum {
2520 CLUSTER_CHANGE_GROUP_DELETED_V2 = 0x00000001,
2521 CLUSTER_CHANGE_GROUP_COMMON_PROPERTY_V2 = 0x00000002,
2522 CLUSTER_CHANGE_GROUP_PRIVATE_PROPERTY_V2 = 0x00000004,
2523 CLUSTER_CHANGE_GROUP_STATE_V2 = 0x00000008,
2524 CLUSTER_CHANGE_GROUP_OWNER_NODE_V2 = 0x00000010,
2525 CLUSTER_CHANGE_GROUP_PREFERRED_OWNERS_V2 = 0x00000020,
2526 CLUSTER_CHANGE_GROUP_RESOURCE_ADDED_V2 = 0x00000040,
2527 CLUSTER_CHANGE_GROUP_RESOURCE_GAINED_V2 = 0x00000080,
2528 CLUSTER_CHANGE_GROUP_RESOURCE_LOST_V2 = 0x00000100,
2529 CLUSTER_CHANGE_GROUP_HANDLE_CLOSE_V2 = 0x00000200
2530 } CLUSTER_CHANGE_GROUP_V2;
2532 typedef enum {
2533 CLUSTER_CHANGE_RESOURCE_COMMON_PROPERTY_V2 = 0x00000001,
2534 CLUSTER_CHANGE_RESOURCE_PRIVATE_PROPERTY_V2 = 0x00000002,
2535 CLUSTER_CHANGE_RESOURCE_STATE_V2 = 0x00000004,
2536 CLUSTER_CHANGE_RESOURCE_OWNER_GROUP_V2 = 0x00000008,
2537 CLUSTER_CHANGE_RESOURCE_DEPENDENCIES_V2 = 0x00000010,
2538 CLUSTER_CHANGE_RESOURCE_DEPENDENTS_V2 = 0x00000020,
2539 CLUSTER_CHANGE_RESOURCE_POSSIBLE_OWNERS_V2 = 0x00000040,
2540 CLUSTER_CHANGE_RESOURCE_DELETED_V2 = 0x00000080,
2541 CLUSTER_CHANGE_RESOURCE_DLL_UPGRADED_V2 = 0x00000100,
2542 CLUSTER_CHANGE_RESOURCE_HANDLE_CLOSE_V2 = 0x00000200
2543 } CLUSTER_CHANGE_RESOURCE_V2;
2545 typedef enum {
2546 CLUSTER_CHANGE_RESOURCE_TYPE_DELETED_V2 = 0x00000001,
2547 CLUSTER_CHANGE_RESOURCE_TYPE_COMMON_PROPERTY_V2 = 0x00000002,
2548 CLUSTER_CHANGE_RESOURCE_TYPE_PRIVATE_PROPERTY_V2 = 0x00000004,
2549 CLUSTER_CHANGE_RESOURCE_TYPE_POSSIBLE_OWNERS_V2 = 0x00000008,
2550 CLUSTER_CHANGE_RESOURCE_TYPE_DLL_UPGRADED_V2 = 0x00000010
2551 } CHANGE_RESOURCE_TYPE_V2;
2553 typedef enum {
2554 CLUSTER_CHANGE_NETINTERFACE_DELETED_V2 = 0x00000001,
2555 CLUSTER_CHANGE_NETINTERFACE_COMMON_PROPERTY_V2 = 0x00000002,
2556 CLUSTER_CHANGE_NETINTERFACE_PRIVATE_PROPERTY_V2 = 0x00000004,
2557 CLUSTER_CHANGE_NETINTERFACE_STATE_V2 = 0x00000008,
2558 CLUSTER_CHANGE_NETINTERFACE_HANDLE_CLOSE_V2 = 0x00000010
2559 } CLUSTER_CHANGE_NETINTERFACE_V2;
2561 typedef enum {
2562 CLUSTER_CHANGE_NETWORK_DELETED_V2 = 0x00000001,
2563 CLUSTER_CHANGE_NETWORK_COMMON_PROPERTY_V2 = 0x00000002,
2564 CLUSTER_CHANGE_NETWORK_PRIVATE_PROPERTY_V2 = 0x00000004,
2565 CLUSTER_CHANGE_NETWORK_STATE_V2 = 0x00000008,
2566 CLUSTER_CHANGE_NETWORK_HANDLE_CLOSE_V2 = 0x00000010
2567 } CLUSTER_CHANGE_NETWORK_V2;
2569 typedef enum {
2570 CLUSTER_CHANGE_NODE_NETINTERFACE_ADDED_V2 = 0x00000001,
2571 CLUSTER_CHANGE_NODE_DELETED_V2 = 0x00000002,
2572 CLUSTER_CHANGE_NODE_COMMON_PROPERTY_V2 = 0x00000004,
2573 CLUSTER_CHANGE_NODE_PRIVATE_PROPERTY_V2 = 0x00000008,
2574 CLUSTER_CHANGE_NODE_STATE_V2 = 0x00000010,
2575 CLUSTER_CHANGE_NODE_GROUP_GAINED_V2 = 0x00000020,
2576 CLUSTER_CHANGE_NODE_GROUP_LOST_V2 = 0x00000040,
2577 CLUSTER_CHANGE_NODE_HANDLE_CLOSE_V2 = 0x00000080
2578 } CLUSTER_CHANGE_NODE_V2;
2580 typedef enum {
2581 CLUSTER_CHANGE_REGISTRY_ATTRIBUTES_V2 = 0x00000001,
2582 CLUSTER_CHANGE_REGISTRY_NAME_V2 = 0x00000002,
2583 CLUSTER_CHANGE_REGISTRY_SUBTREE_V2 = 0x00000004,
2584 CLUSTER_CHANGE_REGISTRY_VALUE_V2 = 0x00000008,
2585 CLUSTER_CHANGE_REGISTRY_HANDLE_CLOSE_V2 = 0x00000010
2586 } CLUSTER_CHANGE_REGISTRY_V2;
2588 typedef enum {
2589 CLUSTER_CHANGE_QUORUM_STATE_V2 = 0x00000001
2590 } CLUSTER_CHANGE_QUORUM_V2;
2592 typedef enum {
2593 CLUSTER_CHANGE_SHARED_VOLUME_STATE_V2 = 0x00000001
2594 } CLUSTER_CHANGE_SHARED_VOLUME_V2;
2595 #if 0
2596 typedef enum {
2597 DiskIdSignature = 0x00000001,
2598 DiskIdGuid = 0x00000002,
2599 DiskIdUnKnown = 0x00001388
2600 } CLUSDSK_DISKID_ENUM;
2601 #endif
2603 /*****************/
2604 /* Function 0x94 */
2606 WERROR
2607 Opnum148NotUsedOnWire(void);
2609 /*****************/
2610 /* Function 0x95 */
2612 WERROR
2613 Opnum149otUsedOnWire(void);
2615 /*****************/
2616 /* Function 0x96 */
2618 WERROR
2619 Opnum150NotUsedOnWire(void);
2621 /*****************/
2622 /* Function 0x97 */
2624 WERROR
2625 Opnum151NotUsedOnWire(void);
2627 /*****************/
2628 /* Function 0x98 */
2630 WERROR
2631 Opnum152NotUsedOnWire(void);
2633 /*****************/
2634 /* Function 0x99 */
2636 WERROR
2637 Opnum153NotUsedOnWire(void);
2639 /*****************/
2640 /* Function 0x9A */
2642 WERROR
2643 Opnum154NotUsedOnWire(void);
2645 /*****************/
2646 /* Function 0x9B */
2648 WERROR
2649 clusapi_AddNotifyResourceTypeV2(
2650 [ in ] HNOTIFY_RPC hNotify,
2651 [ in ] hyper filter,
2652 [ in ] uint32 dwNotifyKey,
2653 [ in, string ] [charset(UTF16)] uint16 *resTypeName,
2654 [ in ] uint32 dwVersion,
2655 [ out ] WERROR *rpc_status
2658 /*****************/
2659 /* Function 0x9C */
2661 WERROR
2662 Opnum156NotUsedOnWire(void);
2664 /*****************/
2665 /* Function 0x9D */
2667 WERROR
2668 clusapi_ExecuteReadBatchEx(
2669 [in] HKEY_RPC hKey,
2670 [in] uint32 cbInData,
2671 [in, size_is(cbInData)] uint8* lpInData,
2672 [in] uint32 flags,
2673 [out] uint32* cbOutData,
2674 [out, size_is(,*cbOutData)] uint8** lpOutData,
2675 [out] WERROR *rpc_status
2678 /*****************/
2679 /* Function 0x9E */
2681 WERROR
2682 Opnum158NotUsedOnWire(void);
2684 /*****************/
2685 /* Function 0x9F */
2687 WERROR
2688 Opnum159NotUsedOnWire(void);
2690 /*****************/
2691 /* Function 0xA0 */
2693 WERROR
2694 Opnum160NotUsedOnWire(void);
2696 /*****************/
2697 /* Function 0xA1 */
2699 WERROR
2700 Opnum161NotUsedOnWire(void);
2702 /*****************/
2703 /* Function 0xA2 */
2705 WERROR
2706 Opnum162NotUsedOnWire(void);
2708 /*****************/
2709 /* Function 0xA3 */
2711 #define HGROUPSET_RPC policy_handle
2712 #if 0
2713 typedef [context_handle] void *HGROUPSET_RPC;
2714 #endif
2715 #if 0
2716 HGROUPSET_RPC
2717 clusapi_CreateGroupSet (
2718 [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
2719 [ out ] WERROR *Status,
2720 [ out ] WERROR *rpc_status
2722 #else
2723 void
2724 clusapi_CreateGroupSet (
2725 [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
2726 [ out ] WERROR *Status,
2727 [ out ] WERROR *rpc_status,
2728 [ out ] HGROUPSET_RPC *hGroupSet
2730 #endif
2732 /*****************/
2733 /* Function 0xA4 */
2734 #if 0
2735 HGROUPSET_RPC
2736 clusapi_OpenGroupSet(
2737 [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
2738 [ out ] WERROR *Status,
2739 [ out ] WERROR *rpc_status
2741 #else
2742 void
2743 clusapi_OpenGroupSet(
2744 [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
2745 [ out ] WERROR *Status,
2746 [ out ] WERROR *rpc_status,
2747 [ out ] HGROUPSET_RPC *hGroupSet
2749 #endif
2751 /*****************/
2752 /* Function 0xA5 */
2754 WERROR
2755 clusapi_CloseGroupSet(
2756 [ in, out ] HGROUPSET_RPC *GroupSet
2759 /*****************/
2760 /* Function 0xA6 */
2762 WERROR
2763 clusapi_DeleteGroupSet(
2764 [ in ] HGROUPSET_RPC GroupSet,
2765 [ out ] WERROR *rpc_status
2768 /*****************/
2769 /* Function 0xA7 */
2771 WERROR
2772 clusapi_AddGroupToGroupSet(
2773 [ in ] HGROUPSET_RPC GroupSet,
2774 [ in ] HGROUP_RPC Group,
2775 [ out ] WERROR *rpc_status
2778 /*****************/
2779 /* Function 0xA8 */
2781 WERROR
2782 clusapi_RemoveGroupFromGroupSet(
2783 [ in ] HGROUP_RPC Group,
2784 [ out ] WERROR *rpc_status
2787 /*****************/
2788 /* Function 0xA9 */
2790 WERROR
2791 clusapi_MoveGroupToGroupSet(
2792 [ in ] HGROUPSET_RPC GroupSet,
2793 [ in ] HGROUP_RPC Group,
2794 [ out ] WERROR *rpc_status
2797 /*****************/
2798 /* Function 0xAA */
2800 WERROR
2801 Opnum170NotUsedOnWire(void);
2803 /*****************/
2804 /* Function 0xAB */
2806 WERROR
2807 clusapi_AddGroupSetDependency(
2808 [ in ] HGROUPSET_RPC DependentGroupSet,
2809 [ in ] HGROUPSET_RPC ProviderGroupSet,
2810 [ out ] WERROR *rpc_status
2813 /*****************/
2814 /* Function 0xAC */
2816 WERROR
2817 clusapi_AddGroupToGroupSetDependency(
2818 [ in ] HGROUP_RPC DependentGroup,
2819 [ in ] HGROUPSET_RPC ProviderGroupSet,
2820 [ out ] WERROR *rpc_status
2823 /*****************/
2824 /* Function 0xAD */
2826 typedef [v1_enum] enum {
2827 CLUSCTL_GROUPSET_GET_ID = 0x08000039,
2828 CLUSCTL_GROUPSET_GET_RO_COMMON_PROPERTIES = 0x08000055,
2829 CLUSCTL_GROUPSET_GET_COMMON_PROPERTIES = 0x08000059,
2830 CLUSCTL_GROUPSET_GET_GROUPS = 0x08002D71,
2831 CLUSCTL_GROUPSET_GET_PROVIDER_GROUPS = 0x08002D75,
2832 CLUSCTL_GROUPSET_GET_PROVIDER_GROUPSETS = 0x08002D79,
2833 CLUSCTL_GROUPSET_SET_COMMON_PROPERTIES = 0x0840005E
2834 } clusapi_GroupSetControlCode;
2836 WERROR
2837 clusapi_NodeGroupSetControl(
2838 [ in ] HGROUPSET_RPC hGroupSet,
2839 [ in ] HNODE_RPC hNode,
2840 [ in ] clusapi_GroupSetControlCode dwControlCode,
2841 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
2842 [ in ] uint32 nInBufferSize,
2843 [ out, size_is(nOutBufferSize), length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
2844 [ in, range(0, MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE)] uint32 nOutBufferSize,
2845 [ out ] uint32 *lpBytesReturned,
2846 [ out ] uint32 *lpcbRequired,
2847 [ out ] WERROR *rpc_status
2850 /*****************/
2851 /* Function 0xAE */
2853 WERROR
2854 clusapi_GroupSetControl(
2855 [ in ] HGROUPSET_RPC hGroupSet,
2856 [ in ] clusapi_GroupSetControlCode dwControlCode,
2857 [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
2858 [ in ] uint32 nInBufferSize,
2859 [ out, size_is(nOutBufferSize), length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
2860 [ in, range(0, 0x7FFFFFFF)] uint32 nOutBufferSize,
2861 [ out ] uint32 *lpBytesReturned,
2862 [ out ] uint32 *lpcbRequired,
2863 [ out ] WERROR *rpc_status
2866 /*****************/
2867 /* Function 0xAF */
2869 WERROR
2870 clusapi_SetGroupDependencyExpression(
2871 [ in ] HGROUP_RPC hGroup,
2872 [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression,
2873 [ out ] WERROR *rpc_status
2876 /*****************/
2877 /* Function 0xB0 */
2879 WERROR
2880 clusapi_RemoveClusterGroupDependency(
2881 [ in ] HGROUP_RPC hGroup,
2882 [ in ] HGROUP_RPC hDependsOn,
2883 [ out ] WERROR *rpc_status
2886 /*****************/
2887 /* Function 0xB1 */
2889 WERROR
2890 clusapi_SetGroupSetDependencyExpression(
2891 [ in ] HGROUPSET_RPC hGroupSet,
2892 [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression,
2893 [ out ] WERROR *rpc_status
2896 /*****************/
2897 /* Function 0xB2 */
2899 WERROR
2900 clusapi_RemoveGroupSetDependency(
2901 [ in ] HGROUPSET_RPC hGroupSet,
2902 [ in ] HGROUPSET_RPC hDependsOn,
2903 [ out ] WERROR *rpc_status
2906 /*****************/
2907 /* Function 0xB3 */
2909 WERROR
2910 clusapi_RemoveClusterGroupToGroupSetDependency(
2911 [ in ] HGROUP_RPC hGroup,
2912 [ in ] HGROUPSET_RPC hDependsOn,
2913 [ out ] WERROR *rpc_status
2916 /*****************/
2917 /* Function 0xB4 */
2919 WERROR
2920 clusapi_CreateGroupSetEnum(
2921 [ in ] HCLUSTER_RPC hCluster,
2922 [ out ] ENUM_LIST **ReturnEnum,
2923 [ out ] WERROR * rpc_status
2926 /*****************/
2927 /* Function 0xB5 */
2929 WERROR
2930 clusapi_CreateNetInterfaceEnum(
2931 [in] HCLUSTER_RPC hCluster,
2932 [in, string] [charset(UTF16)] uint16 *lpszNodeName,
2933 [in, string] [charset(UTF16)] uint16 *lpszNetworkName,
2934 [out] ENUM_LIST **ReturnEnum,
2935 [out] WERROR * rpc_status
2938 /*****************/
2939 /* Function 0xB6 */
2941 WERROR
2942 clusapi_ChangeCsvStateEx(
2943 [ in ] HRES_RPC hResource,
2944 [ in ] uint32 dwState,
2945 [ in, string ] [charset(UTF16)] uint16 *lpszVolumeName,
2946 [ out ] WERROR *rpc_status
2949 /*****************/
2950 /* Function 0xB7 */
2952 WERROR
2953 clusapi_AddGroupToGroupSetEx(
2954 [ in ] HGROUPSET_RPC GroupSet,
2955 [ in ] HGROUP_RPC Group,
2956 [ in ] uint32 FaultDomain,
2957 [ in ] uint32 UpdateDomain,
2958 [ in ] boolean8 UseDomains,
2959 [ in ] uint32 *Reserved,
2960 [ out ] WERROR *rpc_status