1import "winreg.idl", "misc.idl"; 2 3#include "idl_types.h" 4 5[ 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)") 12] 13#define MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE 0x7FFFFFFF 14 interface clusapi 15{ 16#if 0 17 /* 18 * pidl does not yet have a real [context_handle] implementation, so we 19 * just use some defines here. 20 */ 21 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 42 43 typedef struct { 44 [ size_is( cbInSecurityDescriptor ), length_is( cbOutSecurityDescriptor ) ] uint8 *lpSecurityDescriptor; 45 uint32 cbInSecurityDescriptor; 46 uint32 cbOutSecurityDescriptor; 47 } RPC_SECURITY_DESCRIPTOR; 48 49 typedef struct { 50 uint32 nLength; 51 RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor; 52 long bInheritHandle; 53 } RPC_SECURITY_ATTRIBUTES; 54 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; 62 63 typedef struct { 64 uint32 NodeId; 65 boolean8 SetAttempted; 66 uint32 ReturnStatus; 67 } IDL_CLUSTER_SET_PASSWORD_STATUS; 68 69 typedef enum { 70 IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1 71 } IDL_CLUSTER_SET_PASSWORD_FLAGS; 72 73 typedef struct { 74 uint32 dwVersion; 75 uint32 dwGroupType; 76 } CLUSTER_CREATE_GROUP_INFO_RPC; 77 78 /*****************/ 79 /* Function 0x00 */ 80 81#if 0 82 /* 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 87 */ 88 89 HCLUSTER_RPC 90 clusapi_OpenCluster( 91 [ out ] WERROR *Status 92 ); 93#else 94 void 95 clusapi_OpenCluster( 96 [ out ] WERROR *Status, 97 [ out ] HCLUSTER_RPC *Cluster 98 ); 99#endif 100 101 /*****************/ 102 /* Function 0x01 */ 103 104 WERROR 105 clusapi_CloseCluster( 106 [ in, out ] HCLUSTER_RPC *Cluster 107 ); 108 109 /*****************/ 110 /* Function 0x02 */ 111 112 WERROR 113 clusapi_SetClusterName( 114 [ in, string ] [charset(UTF16)] uint16 *NewClusterName, 115 [ out ] WERROR *rpc_status 116 ); 117 118 /*****************/ 119 /* Function 0x03 */ 120 121 WERROR 122 clusapi_GetClusterName( 123 [ out, string ] [charset(UTF16)] uint16 **ClusterName, 124 [ out, string ] [charset(UTF16)] uint16 **NodeName 125 ); 126 127 /*****************/ 128 /* Function 0x04 */ 129 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 137 ); 138 139 /*****************/ 140 /* Function 0x05 */ 141 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 148 ); 149 150 /*****************/ 151 /* Function 0x06 */ 152 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 159 ); 160 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; 171 172 typedef struct { 173 ClusterEnumType Type; 174 [string] [charset(UTF16)] uint16 *Name; 175 } ENUM_ENTRY; 176 177 typedef struct { 178 uint32 EntryCount; 179 [size_is(EntryCount)] ENUM_ENTRY Entry[*]; 180 } ENUM_LIST; 181 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; 193 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; 204 205 typedef struct { 206 uint32 EntryCount; 207 [size_is(EntryCount)] GROUP_ENUM_ENTRY Entry[*]; 208 } GROUP_ENUM_LIST; 209 210 typedef struct { 211 uint32 EntryCount; 212 [size_is(EntryCount)] RESOURCE_ENUM_ENTRY Entry[*]; 213 } RESOURCE_ENUM_LIST; 214 215 /*****************/ 216 /* Function 0x07 */ 217 218 WERROR 219 clusapi_CreateEnum( 220 [ in ] ClusterEnumType dwType, 221 [ out ] ENUM_LIST **ReturnEnum, 222 [ out ] WERROR *rpc_status 223 ); 224 225 /*****************/ 226 /* Function 0x08 */ 227 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 234 ); 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 242 ); 243#endif 244 /*****************/ 245 /* Function 0x09 */ 246 247 typedef [v1_enum] enum { 248 CLUSTER_RESOURCE_DEFAULT_MONITOR = 0x00000000, 249 CLUSTER_RESOURCE_SEPARATE_MONITOR = 0x00000001 250 } clusapi_CreateResourceFlags; 251 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 261 ); 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 272 ); 273#endif 274 /*****************/ 275 /* Function 0x0A */ 276 277 WERROR 278 clusapi_DeleteResource( 279 [ in ] HRES_RPC hResource, 280 [ out ] WERROR *rpc_status 281 ); 282 283 /*****************/ 284 /* Function 0x0B */ 285 286 WERROR 287 clusapi_CloseResource( 288 [ in, out ] HRES_RPC *Resource 289 ); 290 291 /*****************/ 292 /* Function 0x0C */ 293 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; 303 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 311 ); 312 313 /*****************/ 314 /* Function 0x0D */ 315 316 WERROR 317 clusapi_SetResourceName( 318 [ in ] HRES_RPC hResource, 319 [ in, string ] [charset(UTF16)] uint16 *lpszResourceName, 320 [ out ] WERROR *rpc_status 321 ); 322 323 /*****************/ 324 /* Function 0x0E */ 325 326 WERROR 327 clusapi_GetResourceId( 328 [ in ] HRES_RPC hResource, 329 [ out, string ] [charset(UTF16)] uint16 **pGuid, 330 [ out ] WERROR *rpc_status 331 ); 332 333 /*****************/ 334 /* Function 0x0F */ 335 336 WERROR 337 clusapi_GetResourceType( 338 [ in ] HRES_RPC hResource, 339 [ out, string ] [charset(UTF16)] uint16 **lpszResourceType, 340 [ out ] WERROR *rpc_status 341 ); 342 343 /*****************/ 344 /* Function 0x10 */ 345 346 WERROR 347 clusapi_FailResource( 348 [ in ] HRES_RPC hResource, 349 [ out ] WERROR *rpc_status 350 ); 351 352 /*****************/ 353 /* Function 0x11 */ 354 355 WERROR 356 clusapi_OnlineResource( 357 [ in ] HRES_RPC hResource, 358 [ out ] WERROR *rpc_status 359 ); 360 361 /*****************/ 362 /* Function 0x12 */ 363 364 WERROR 365 clusapi_OfflineResource( 366 [ in ] HRES_RPC hResource, 367 [ out ] WERROR *rpc_status 368 ); 369 370 /*****************/ 371 /* Function 0x13 */ 372 373 WERROR 374 clusapi_AddResourceDependency( 375 [ in ] HRES_RPC hResource, 376 [ in ] HRES_RPC hDependsOn, 377 [ out ] WERROR *rpc_status 378 ); 379 380 /*****************/ 381 /* Function 0x14 */ 382 383 WERROR 384 clusapi_RemoveResourceDependency( 385 [ in ] HRES_RPC hResource, 386 [ in ] HRES_RPC hDependsOn, 387 [ out ] WERROR *rpc_status 388 ); 389 390 /*****************/ 391 /* Function 0x15 */ 392 393 WERROR 394 clusapi_CanResourceBeDependent( 395 [ in ] HRES_RPC hResource, 396 [ in ] HRES_RPC hResourceDependent, 397 [ out ] WERROR *rpc_status 398 ); 399 400 /*****************/ 401 /* Function 0x16 */ 402 403 WERROR 404 clusapi_CreateResEnum( 405 [ in ] HRES_RPC hResource, 406 [ in ] uint32 dwType, 407 [ out ] ENUM_LIST **ReturnEnum, 408 [ out ] WERROR *rpc_status 409 ); 410 411 /*****************/ 412 /* Function 0x17 */ 413 414 WERROR 415 clusapi_AddResourceNode( 416 [ in ] HRES_RPC hResource, 417 [ in ] HNODE_RPC hNode, 418 [ out ] WERROR *rpc_status 419 ); 420 421 /*****************/ 422 /* Function 0x18 */ 423 424 WERROR 425 clusapi_RemoveResourceNode( 426 [ in ] HRES_RPC hResource, 427 [ in ] HNODE_RPC hNode, 428 [ out ] WERROR *rpc_status 429 ); 430 431 /*****************/ 432 /* Function 0x19 */ 433 434 WERROR 435 clusapi_ChangeResourceGroup( 436 [ in ] HRES_RPC hResource, 437 [ in ] HGROUP_RPC hGroup, 438 [ out ] WERROR *rpc_status 439 ); 440 441 /*****************/ 442 /* Function 0x1A */ 443 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 452 ); 453 454 /*****************/ 455 /* Function 0x1B */ 456 457 WERROR 458 clusapi_DeleteResourceType( 459 [ in, string ] [charset(UTF16)] uint16 *lpszTypeName, 460 [ out ] WERROR *rpc_status 461 ); 462 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 471 ); 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 479 ); 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 494 ); 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 507 ); 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 519 ); 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 529 ); 530#endif 531 /*****************/ 532 /* Function 0x1F */ 533 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 541 ); 542 543 /*****************/ 544 /* Function 0x20 */ 545 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 554 ); 555 556 /*****************/ 557 /* Function 0x21 */ 558 559 WERROR 560 clusapi_DeleteValue( 561 [ in ] HKEY_RPC hKey, 562 [ in, string ] [charset(UTF16)] uint16 *lpValueName, 563 [ out ] WERROR *rpc_status 564 ); 565 566 /*****************/ 567 /* Function 0x22 */ 568 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 578 ); 579 580 /*****************/ 581 /* Function 0x23 */ 582 583 WERROR 584 clusapi_DeleteKey( 585 [ in ] HKEY_RPC hKey, 586 [ in, string ] [charset(UTF16)] uint16 *lpSubKey, 587 [ out ] WERROR *rpc_status 588 ); 589 590 /*****************/ 591 /* Function 0x24 */ 592 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 603 ); 604 605 /*****************/ 606 /* Function 0x25 */ 607 608 WERROR 609 clusapi_CloseKey( 610 [ in, out ] HKEY_RPC *pKey 611 ); 612 613 /*****************/ 614 /* Function 0x26 */ 615 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 627 ); 628 629 /*****************/ 630 /* Function 0x27 */ 631 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 638 ); 639 640 /*****************/ 641 /* Function 0x28 */ 642 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 649 ); 650 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 659 ); 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 667 ); 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 677 ); 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 685 ); 686#endif 687 /*****************/ 688 /* Function 0x2B */ 689 690 WERROR 691 clusapi_DeleteGroup( 692 [ in ] HGROUP_RPC Group, 693 [ in ] boolean8 force, 694 [ out ] WERROR *rpc_status 695 ); 696 697 /*****************/ 698 /* Function 0x2C */ 699 700 WERROR 701 clusapi_CloseGroup( 702 [ in, out ] HGROUP_RPC *Group 703 ); 704 705 /*****************/ 706 /* Function 0x2D */ 707 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; 716 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 723 ); 724 725 /*****************/ 726 /* Function 0x2E */ 727 728 WERROR 729 clusapi_SetGroupName( 730 [ in ] HGROUP_RPC hGroup, 731 [ in, string ] [charset(UTF16)] uint16 *lpszGroupName, 732 [ out ] WERROR *rpc_status 733 ); 734 735 /*****************/ 736 /* Function 0x2F */ 737 738 WERROR 739 clusapi_GetGroupId( 740 [ in ] HGROUP_RPC hGroup, 741 [ out, string ] [charset(UTF16)] uint16 **pGuid, 742 [ out ] WERROR *rpc_status 743 ); 744 745 /*****************/ 746 /* Function 0x30 */ 747 748 WERROR 749 clusapi_GetNodeId( 750 [ in ] HNODE_RPC hNode, 751 [ out, string ] [charset(UTF16)] uint16 **pGuid, 752 [ out ] WERROR *rpc_status 753 ); 754 755 /*****************/ 756 /* Function 0x31 */ 757 758 WERROR 759 clusapi_OnlineGroup( 760 [ in ] HGROUP_RPC hGroup, 761 [ out ] WERROR *rpc_status 762 ); 763 764 /*****************/ 765 /* Function 0x32 */ 766 767 WERROR 768 clusapi_OfflineGroup( 769 [ in ] HGROUP_RPC hGroup, 770 [ out ] WERROR *rpc_status 771 ); 772 773 /*****************/ 774 /* Function 0x33 */ 775 776 WERROR 777 clusapi_MoveGroup( 778 [ in ] HGROUP_RPC hGroup, 779 [ out ] WERROR *rpc_status 780 ); 781 782 /*****************/ 783 /* Function 0x34 */ 784 785 WERROR 786 clusapi_MoveGroupToNode( 787 [ in ] HGROUP_RPC hGroup, 788 [ in ] HNODE_RPC hNode, 789 [ out ] WERROR *rpc_status 790 ); 791 792 /*****************/ 793 /* Function 0x35 */ 794 795 typedef [bitmap32bit] bitmap { 796 CLUSTER_GROUP_ENUM_CONTAINS = 0x00000001, 797 CLUSTER_GROUP_ENUM_NODES = 0x00000002 798 } ClusterGroupEnumType; 799 800 WERROR 801 clusapi_CreateGroupResourceEnum( 802 [ in ] HGROUP_RPC hGroup, 803 [ in ] ClusterGroupEnumType dwType, 804 [ out ] ENUM_LIST **ReturnEnum, 805 [ out ] WERROR *rpc_status 806 ); 807 808 /*****************/ 809 /* Function 0x36 */ 810 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 817 ); 818 819 /*****************/ 820 /* Function 0x37 */ 821#if 0 822 HNOTIFY_RPC 823 clusapi_CreateNotify( 824 [ out ] WERROR *Status, 825 [ out ] WERROR *rpc_status 826 ); 827#else 828 void 829 clusapi_CreateNotify( 830 [ out ] WERROR *Status, 831 [ out ] WERROR *rpc_status, 832 [ out ] HNOTIFY_RPC *hNotify 833 ); 834#endif 835 /*****************/ 836 /* Function 0x38 */ 837 838 WERROR 839 clusapi_CloseNotify( 840 [ in, out ] HNOTIFY_RPC *Notify 841 ); 842 843 /*****************/ 844 /* Function 0x39 */ 845 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 853 ); 854 855 /*****************/ 856 /* Function 0x3A */ 857 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 866 ); 867 868 /*****************/ 869 /* Function 0x3B */ 870 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 879 ); 880 881 /*****************/ 882 /* Function 0x3C */ 883 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 892 ); 893 894 /*****************/ 895 /* Function 0x3D */ 896 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 905 ); 906 907 /*****************/ 908 /* Function 0x3E */ 909 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 918 ); 919 920 /*****************/ 921 /* Function 0x3F */ 922 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 931 ); 932 933 /*****************/ 934 /* Function 0x40 */ 935 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 944 ); 945 946 /*****************/ 947 /* Function 0x41 */ 948 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 957 ); 958 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 967 ); 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 975 ); 976#endif 977 /*****************/ 978 /* Function 0x43 */ 979 980 WERROR 981 clusapi_CloseNode( 982 [ in, out ] HNODE_RPC *Node 983 ); 984 985 /*****************/ 986 /* Function 0x44 */ 987 988 typedef [v1_enum] enum { 989 ClusterNodeUp = 0x00000000, 990 ClusterNodeDown = 0x00000001, 991 ClusterNodePaused = 0x00000002, 992 ClusterNodeJoining = 0x00000003, 993 ClusterNodeStateUnknown = 0xFFFFFFFF 994 } clusapi_ClusterNodeState; 995 996 WERROR 997 clusapi_GetNodeState( 998 [ in ] HNODE_RPC hNode, 999 [ out ] clusapi_ClusterNodeState *State, 1000 [ out ] WERROR *rpc_status 1001 ); 1002 1003 /*****************/ 1004 /* Function 0x45 */ 1005 1006 WERROR 1007 clusapi_PauseNode( 1008 [ in ] HNODE_RPC hNode, 1009 [ out ] WERROR *rpc_status 1010 ); 1011 1012 /*****************/ 1013 /* Function 0x46 */ 1014 1015 WERROR 1016 clusapi_ResumeNode( 1017 [ in ] HNODE_RPC hNode, 1018 [ out ] WERROR *rpc_status 1019 ); 1020 1021 /*****************/ 1022 /* Function 0x47 */ 1023 1024 WERROR 1025 clusapi_EvictNode( 1026 [ in ] HNODE_RPC hNode, 1027 [ out ] WERROR *rpc_status 1028 ); 1029 1030 /*****************/ 1031 /* Function 0x48 */ 1032 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 1046 ); 1047 1048 /*****************/ 1049 /* Function 0x49 */ 1050 1051 typedef [v1_enum] enum { 1052 CLUS_RESCLASS_UNKNOWN = 0x00000000, 1053 CLUS_RESCLASS_STORAGE = 0x00000001, 1054 CLUS_RESCLASS_NETWORK = 0x00000002 1055 } clusapi_ResourceClass; 1056 1057 typedef [public] struct { 1058 clusapi_ResourceClass Class; 1059 uint32 SubClass; 1060 } CLUS_RESOURCE_CLASS_INFO; 1061 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; 1123 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 1136 ); 1137 1138 /*****************/ 1139 /* Function 0x4A */ 1140 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 1155 ); 1156 1157 /*****************/ 1158 /* Function 0x4B */ 1159 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; 1201 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 1215 ); 1216 1217 /*****************/ 1218 /* Function 0x4C */ 1219 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 1233 ); 1234 1235 /*****************/ 1236 /* Function 0x4D */ 1237 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; 1256 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 1269 ); 1270 1271 /*****************/ 1272 /* Function 0x4E */ 1273 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 1287 ); 1288 1289 /*****************/ 1290 /* Function 0x4F */ 1291 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; 1310 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 1323 ); 1324 1325 /*****************/ 1326 /* Function 0x50 */ 1327 1328 WERROR 1329 Opnum80NotUsedOnWire(void); 1330 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 1339 ); 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 1347 ); 1348#endif 1349 /*****************/ 1350 /* Function 0x52 */ 1351 1352 WERROR 1353 clusapi_CloseNetwork( 1354 [ in, out ] HNETWORK_RPC *Network 1355 ); 1356 1357 /*****************/ 1358 /* Function 0x53 */ 1359 1360 typedef [v1_enum] enum { 1361 ClusterNetworkUnavailable = 0x00000000, 1362 ClusterNetworkDown = 0x00000001, 1363 ClusterNetworkPartitioned = 0x00000002, 1364 ClusterNetworkUp = 0x00000003, 1365 ClusterNetworkStateUnknown = 0xFFFFFFFF 1366 } clusapi_ClusterNetworkState; 1367 1368 WERROR 1369 clusapi_GetNetworkState( 1370 [ in ] HNETWORK_RPC hNetwork, 1371 [ out ] clusapi_ClusterNetworkState *State, 1372 [ out ] WERROR *rpc_status 1373 ); 1374 1375 /*****************/ 1376 /* Function 0x54 */ 1377 1378 WERROR 1379 clusapi_SetNetworkName( 1380 [ in ] HNETWORK_RPC hNetwork, 1381 [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName, 1382 [ out ] WERROR *rpc_status 1383 ); 1384 1385 /*****************/ 1386 /* Function 0x55 */ 1387 1388 WERROR 1389 clusapi_CreateNetworkEnum( 1390 [ in ] HNETWORK_RPC hNetwork, 1391 [ in ] uint32 dwType, 1392 [ out ] ENUM_LIST **ReturnEnum, 1393 [ out ] WERROR *rpc_status 1394 ); 1395 1396 /*****************/ 1397 /* Function 0x56 */ 1398 1399 WERROR 1400 clusapi_GetNetworkId( 1401 [ in ] HNETWORK_RPC hNetwork, 1402 [ out, string ] [charset(UTF16)] uint16 **pGuid, 1403 [ out ] WERROR *rpc_status 1404 ); 1405 1406 /*****************/ 1407 /* Function 0x57 */ 1408 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 1414 ); 1415 1416 /*****************/ 1417 /* Function 0x58 */ 1418 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 1432 ); 1433 1434 /*****************/ 1435 /* Function 0x59 */ 1436 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 1449 ); 1450 1451 /*****************/ 1452 /* Function 0x5A */ 1453 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 1462 ); 1463 1464 /*****************/ 1465 /* Function 0x5B */ 1466 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 1475 ); 1476 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 1485 ); 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 1493 ); 1494#endif 1495 /*****************/ 1496 /* Function 0x5D */ 1497 1498 WERROR 1499 clusapi_CloseNetInterface( 1500 [ in, out ] HNETINTERFACE_RPC *NetInterface 1501 ); 1502 1503 /*****************/ 1504 /* Function 0x5E */ 1505 1506 typedef [v1_enum] enum { 1507 ClusterNetInterfaceFailed = 0x00000000, 1508 ClusterNetInterfaceUnreachable = 0x00000001, 1509 ClusterNetInterfaceUnavailable = 0x00000002, 1510 ClusterNetInterfaceUp = 0x00000003, 1511 ClusterNetInterfaceStateUnknown = 0xFFFFFFFF 1512 } clusapi_ClusterNetInterfaceState; 1513 1514 WERROR 1515 clusapi_GetNetInterfaceState( 1516 [ in ] HNETINTERFACE_RPC hNetInterface, 1517 [ out ] clusapi_ClusterNetInterfaceState *State, 1518 [ out ] WERROR *rpc_status 1519 ); 1520 1521 /*****************/ 1522 /* Function 0x5F */ 1523 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 1530 ); 1531 1532 /*****************/ 1533 /* Function 0x60 */ 1534 1535 WERROR 1536 clusapi_GetNetInterfaceId( 1537 [ in ] HNETINTERFACE_RPC hNetInterface, 1538 [ out, string ] [charset(UTF16)] uint16 **pGuid, 1539 [ out ] WERROR *rpc_status 1540 ); 1541 1542 /*****************/ 1543 /* Function 0x61 */ 1544 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 1558 ); 1559 1560 /*****************/ 1561 /* Function 0x62 */ 1562 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 1575 ); 1576 1577 /*****************/ 1578 /* Function 0x63 */ 1579 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 1588 ); 1589 1590 /*****************/ 1591 /* Function 0x64 */ 1592 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 1601 ); 1602 1603 /*****************/ 1604 /* Function 0x65 */ 1605 1606 WERROR 1607 clusapi_CreateNodeEnum( 1608 [ in ] HNODE_RPC hNode, 1609 [ in ] uint32 dwType, 1610 [ out ] ENUM_LIST **ReturnEnum, 1611 [ out ] WERROR *rpc_status 1612 ); 1613 1614 /*****************/ 1615 /* Function 0x66 */ 1616 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 1626 ); 1627 1628 /*****************/ 1629 /* Function 0x67 */ 1630 1631 typedef [bitmap32bit] bitmap { 1632 CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001, 1633 CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES = 0x00000002 1634 } ClusterResTypeEnumType; 1635 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 1642 ); 1643 1644 /*****************/ 1645 /* Function 0x68 */ 1646 1647 WERROR 1648 clusapi_BackupClusterDatabase( 1649 [ in, string ] [charset(UTF16)] uint16 *lpszPathName, 1650 [ out ] WERROR *rpc_status 1651 ); 1652 1653 /*****************/ 1654 /* Function 0x69 */ 1655 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 1669 ); 1670 1671 /*****************/ 1672 /* Function 0x6A */ 1673 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; 1696 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; 1722 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; 1729 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; 1738 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; 1744 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 1757 ); 1758 1759 /*****************/ 1760 /* Function 0x6B */ 1761 1762 WERROR 1763 clusapi_UnblockGetNotifyCall( 1764 [ in ] HNOTIFY_RPC hNotify 1765 ); 1766 1767 /*****************/ 1768 /* Function 0x6C */ 1769 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 1779 ); 1780 1781 /*****************/ 1782 /* Function 0x6D */ 1783 1784 WERROR 1785 clusapi_SetResourceDependencyExpression( 1786 [ in ] HRES_RPC hResource, 1787 [ in, string, unique ] [charset(UTF16)] uint16 *lpszDependencyExpression, 1788 [ out ] WERROR *rpc_status 1789 ); 1790 1791 /*****************/ 1792 /* Function 0x6E */ 1793 1794 WERROR 1795 clusapi_GetResourceDependencyExpression( 1796 [ in ] HRES_RPC hResource, 1797 [ out, string ] [charset(UTF16)] uint16 **lpszDependencyExpression, 1798 [ out ] WERROR *rpc_status 1799 ); 1800 1801 /*****************/ 1802 /* Function 0x6F */ 1803 1804 WERROR 1805 Opnum111NotUsedOnWire(void); 1806 1807 /*****************/ 1808 /* Function 0x70 */ 1809 1810 WERROR 1811 clusapi_GetResourceNetworkName( 1812 [ in ] HRES_RPC hResource, 1813 [ out, string ] [charset(UTF16)] uint16 **lpszName, 1814 [ out ] WERROR *rpc_status 1815 ); 1816 1817 /*****************/ 1818 /* Function 0x71 */ 1819 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 1827 ); 1828 1829 /*****************/ 1830 /* Function 0x72 */ 1831 1832 WERROR 1833 clusapi_CreateBatchPort( 1834 [ in ] HKEY_RPC hKey, 1835 [ out ] HBATCH_PORT_RPC *phBatchPort, 1836 [ out ] WERROR *rpc_status 1837 ); 1838 1839 /*****************/ 1840 /* Function 0x73 */ 1841 1842 WERROR 1843 clusapi_GetBatchNotification( 1844 [ in ] HBATCH_PORT_RPC hBatchNotify, 1845 [ out ] uint32 *cbData, 1846 [ out, size_is(,*cbData) ] uint8 ** lpData 1847 ); 1848 1849 /*****************/ 1850 /* Function 0x74 */ 1851 1852 WERROR 1853 clusapi_CloseBatchPort( 1854 [ in, out ] HBATCH_PORT_RPC *phBatchPort 1855 ); 1856 1857 /*****************/ 1858 /* Function 0x75 */ 1859 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; 1869 1870#if 0 1871 HCLUSTER_RPC 1872 clusapi_OpenClusterEx( 1873 [ in ] clusapi_DesiredAccessMask dwDesiredAccess, 1874 [ out ] uint32 *lpdwGrantedAccess, 1875 [ out ] WERROR *Status 1876 ); 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 1884 ); 1885#endif 1886 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 1897 ); 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 1907 ); 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 1919 ); 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 1929 ); 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 1941 ); 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 1951 ); 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 1963 ); 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 1973 ); 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 1985 ); 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 1995 ); 1996#endif 1997 /*****************/ 1998 /* Function 0x7B */ 1999 2000 WERROR 2001 clusapi_ChangeCsvState( 2002 [ in ] HRES_RPC hResource, 2003 [ in ] uint32 dwState, 2004 [ out ] WERROR *rpc_status 2005 ); 2006 2007 /*****************/ 2008 /* Function 0x7C */ 2009 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 2018 ); 2019 2020 /*****************/ 2021 /* Function 0x7D */ 2022 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 2031 ); 2032 2033 /*****************/ 2034 /* Function 0x7E */ 2035 2036 WERROR 2037 clusapi_PauseNodeEx( 2038 [ in ] HNODE_RPC hNode, 2039 [ in ] boolean8 bDrainNode, 2040 [ in ] uint32 dwPauseFlags, 2041 [ out ] WERROR *rpc_status 2042 ); 2043 2044 /*****************/ 2045 /* Function 0x7F */ 2046 2047 WERROR 2048 clusapi_PauseNodeWithDrainTarget( 2049 [ in ] HNODE_RPC hNode, 2050 [ in ] uint32 dwPauseFlags, 2051 [ in ] HNODE_RPC hNodeDrainTarget, 2052 [ out ] WERROR *rpc_status 2053 ); 2054 2055 /*****************/ 2056 /* Function 0x80 */ 2057 2058 WERROR 2059 clusapi_ResumeNodeEx( 2060 [ in ] HNODE_RPC hNode, 2061 [ in ] uint32 dwResumeFailbackType, 2062 [ in ] uint32 dwResumeFlagsReserved, 2063 [ out ] WERROR *rpc_status 2064 ); 2065 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 2075 ); 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 2084 ); 2085#endif 2086 /*****************/ 2087 /* Function 0x82 */ 2088 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 2096 ); 2097 2098 /*****************/ 2099 /* Function 0x83 */ 2100 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 2108 ); 2109 2110 /*****************/ 2111 /* Function 0x84 */ 2112 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 2120 ); 2121 2122 /*****************/ 2123 /* Function 0x85 */ 2124 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 2133 ); 2134 2135 /*****************/ 2136 /* Function 0x86 */ 2137 2138 WERROR 2139 clusapi_CancelClusterGroupOperation( 2140 [ in ] HGROUP_RPC hGroup, 2141 [ in ] uint32 dwCancelFlags, 2142 [ out ] WERROR *rpc_status 2143 ); 2144 2145 /*****************/ 2146 /* Function 0x87 */ 2147 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 2155 ); 2156 2157 /*****************/ 2158 /* Function 0x88 */ 2159 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 2167 ); 2168 2169#define HGENERIC_RPC policy_handle 2170#if 0 2171 typedef [context_handle] void *HGENERIC_RPC; 2172#endif 2173 2174 typedef struct { 2175 uint32 dwObjectType; /* really of type CLUSTER_OBJECT_TYPE_RPC */ 2176 hyper FilterFlags; 2177 } NOTIFY_FILTER_AND_TYPE_RPC; 2178 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; 2188 2189 typedef struct { 2190 uint32 *dwNotifyKey; 2191 NOTIFICATION_DATA_RPC NotificationData; 2192 } NOTIFICATION_RPC; 2193 2194 /*****************/ 2195 /* Function 0x89 */ 2196 2197 /* 2198 * Notify interface V2 functions 2199 */ 2200#if 0 2201 HNOTIFY_RPC 2202 clusapi_CreateNotifyV2( 2203 [ out ] WERROR *rpc_error, 2204 [ out ] WERROR *rpc_status 2205 ); 2206#else 2207 void 2208 clusapi_CreateNotifyV2( 2209 [ out ] WERROR *rpc_error, 2210 [ out ] WERROR *rpc_status, 2211 [ out ] HNOTIFY_RPC *hNotify 2212 ); 2213 2214#endif 2215 /*****************/ 2216 /* Function 0x8A */ 2217 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 2227 ); 2228 2229 /*****************/ 2230 /* Function 0x8B */ 2231 2232 WERROR 2233 clusapi_GetNotifyV2( 2234 [ in ] HNOTIFY_RPC hNotify, 2235 [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_RPC **Notifications, 2236 [ out ] uint32 *dwNumNotifications 2237 ); 2238 2239 /*****************/ 2240 /* Function 0x8C */ 2241 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 2248 ); 2249 2250 typedef struct { 2251 uint32 DiskIdType; 2252 uint8 DiskIdBlob[16]; 2253 } CLUSTER_DISKID; 2254 2255 /*****************/ 2256 /* Function 0x8D */ 2257 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 2267 ); 2268 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; 2275 2276 typedef struct { 2277 uint32 NodeCount; 2278 [size_is(NodeCount)] CLUSTER_MRR_NODE_RESPONSE *pNodes; 2279 } CLUSTER_MRR_RESPONSE; 2280 2281 /*****************/ 2282 /* Function 0x8E */ 2283 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 2296 ); 2297 2298 /*****************/ 2299 /* Function 0x8F */ 2300 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 2310 ); 2311 2312 /*****************/ 2313 /* Function 0x90 */ 2314 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 2324 ); 2325 2326 /*****************/ 2327 /* Function 0x91 */ 2328 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 2337 ); 2338 2339 /*****************/ 2340 /* Function 0x92 */ 2341 2342 WERROR 2343 clusapi_RestartResource( 2344 [ in ] HRES_RPC hResource, 2345 [ in ] uint32 dwFlags, 2346 [ out ] WERROR *rpc_status 2347 ); 2348 2349 typedef struct { 2350 uint32 dwNotifyKey; 2351 uint32 dwFilter; 2352 [string] [charset(UTF16)] uint16 *Name; 2353 } NOTIFICATION_DATA_ASYNC_RPC; 2354 2355 /*****************/ 2356 /* Function 0x93 */ 2357 2358 WERROR 2359 clusapi_GetNotifyAsync( 2360 [ in ] HNOTIFY_RPC hNotify, 2361 [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_DATA_ASYNC_RPC **Notifications, 2362 [ out ] uint32 *dwNumNotifications 2363 ); 2364 2365 typedef enum { 2366 DiskIdSignature = 0x00000001, 2367 DiskIdGuid = 0x00000002, 2368 DiskIdUnKnown = 0x00001388 2369 } CLUSDSK_DISKID_ENUM; 2370 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; 2377 }; 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; 2394 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; 2410 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; 2426 2427 typedef enum { 2428 CLUS_FLAG_CORE = 0x00000001 2429 } CLUS_FLAGS; 2430 2431 typedef enum { 2432 MaintenanceModeTypeDisableIsAliveCheck = 1, 2433 MaintenanceModeTypeOfflineResource = 2, 2434 MaintenanceModeTypeUnclusterResource = 3 2435 } MAINTENANCE_MODE_TYPE; 2436 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; 2471 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; 2491 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; 2504 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; 2518 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; 2531 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; 2544 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; 2552 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; 2560 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; 2568 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; 2579 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; 2587 2588 typedef enum { 2589 CLUSTER_CHANGE_QUORUM_STATE_V2 = 0x00000001 2590 } CLUSTER_CHANGE_QUORUM_V2; 2591 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 2602 2603 /*****************/ 2604 /* Function 0x94 */ 2605 2606 WERROR 2607 Opnum148NotUsedOnWire(void); 2608 2609 /*****************/ 2610 /* Function 0x95 */ 2611 2612 WERROR 2613 Opnum149otUsedOnWire(void); 2614 2615 /*****************/ 2616 /* Function 0x96 */ 2617 2618 WERROR 2619 Opnum150NotUsedOnWire(void); 2620 2621 /*****************/ 2622 /* Function 0x97 */ 2623 2624 WERROR 2625 Opnum151NotUsedOnWire(void); 2626 2627 /*****************/ 2628 /* Function 0x98 */ 2629 2630 WERROR 2631 Opnum152NotUsedOnWire(void); 2632 2633 /*****************/ 2634 /* Function 0x99 */ 2635 2636 WERROR 2637 Opnum153NotUsedOnWire(void); 2638 2639 /*****************/ 2640 /* Function 0x9A */ 2641 2642 WERROR 2643 Opnum154NotUsedOnWire(void); 2644 2645 /*****************/ 2646 /* Function 0x9B */ 2647 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 2656 ); 2657 2658 /*****************/ 2659 /* Function 0x9C */ 2660 2661 WERROR 2662 Opnum156NotUsedOnWire(void); 2663 2664 /*****************/ 2665 /* Function 0x9D */ 2666 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 2676 ); 2677 2678 /*****************/ 2679 /* Function 0x9E */ 2680 2681 WERROR 2682 Opnum158NotUsedOnWire(void); 2683 2684 /*****************/ 2685 /* Function 0x9F */ 2686 2687 WERROR 2688 Opnum159NotUsedOnWire(void); 2689 2690 /*****************/ 2691 /* Function 0xA0 */ 2692 2693 WERROR 2694 Opnum160NotUsedOnWire(void); 2695 2696 /*****************/ 2697 /* Function 0xA1 */ 2698 2699 WERROR 2700 Opnum161NotUsedOnWire(void); 2701 2702 /*****************/ 2703 /* Function 0xA2 */ 2704 2705 WERROR 2706 Opnum162NotUsedOnWire(void); 2707 2708 /*****************/ 2709 /* Function 0xA3 */ 2710 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 2721 ); 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 2729 ); 2730#endif 2731 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 2740 ); 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 2748 ); 2749#endif 2750 2751 /*****************/ 2752 /* Function 0xA5 */ 2753 2754 WERROR 2755 clusapi_CloseGroupSet( 2756 [ in, out ] HGROUPSET_RPC *GroupSet 2757 ); 2758 2759 /*****************/ 2760 /* Function 0xA6 */ 2761 2762 WERROR 2763 clusapi_DeleteGroupSet( 2764 [ in ] HGROUPSET_RPC GroupSet, 2765 [ out ] WERROR *rpc_status 2766 ); 2767 2768 /*****************/ 2769 /* Function 0xA7 */ 2770 2771 WERROR 2772 clusapi_AddGroupToGroupSet( 2773 [ in ] HGROUPSET_RPC GroupSet, 2774 [ in ] HGROUP_RPC Group, 2775 [ out ] WERROR *rpc_status 2776 ); 2777 2778 /*****************/ 2779 /* Function 0xA8 */ 2780 2781 WERROR 2782 clusapi_RemoveGroupFromGroupSet( 2783 [ in ] HGROUP_RPC Group, 2784 [ out ] WERROR *rpc_status 2785 ); 2786 2787 /*****************/ 2788 /* Function 0xA9 */ 2789 2790 WERROR 2791 clusapi_MoveGroupToGroupSet( 2792 [ in ] HGROUPSET_RPC GroupSet, 2793 [ in ] HGROUP_RPC Group, 2794 [ out ] WERROR *rpc_status 2795 ); 2796 2797 /*****************/ 2798 /* Function 0xAA */ 2799 2800 WERROR 2801 Opnum170NotUsedOnWire(void); 2802 2803 /*****************/ 2804 /* Function 0xAB */ 2805 2806 WERROR 2807 clusapi_AddGroupSetDependency( 2808 [ in ] HGROUPSET_RPC DependentGroupSet, 2809 [ in ] HGROUPSET_RPC ProviderGroupSet, 2810 [ out ] WERROR *rpc_status 2811 ); 2812 2813 /*****************/ 2814 /* Function 0xAC */ 2815 2816 WERROR 2817 clusapi_AddGroupToGroupSetDependency( 2818 [ in ] HGROUP_RPC DependentGroup, 2819 [ in ] HGROUPSET_RPC ProviderGroupSet, 2820 [ out ] WERROR *rpc_status 2821 ); 2822 2823 /*****************/ 2824 /* Function 0xAD */ 2825 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; 2835 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 2848 ); 2849 2850 /*****************/ 2851 /* Function 0xAE */ 2852 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 2864 ); 2865 2866 /*****************/ 2867 /* Function 0xAF */ 2868 2869 WERROR 2870 clusapi_SetGroupDependencyExpression( 2871 [ in ] HGROUP_RPC hGroup, 2872 [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression, 2873 [ out ] WERROR *rpc_status 2874 ); 2875 2876 /*****************/ 2877 /* Function 0xB0 */ 2878 2879 WERROR 2880 clusapi_RemoveClusterGroupDependency( 2881 [ in ] HGROUP_RPC hGroup, 2882 [ in ] HGROUP_RPC hDependsOn, 2883 [ out ] WERROR *rpc_status 2884 ); 2885 2886 /*****************/ 2887 /* Function 0xB1 */ 2888 2889 WERROR 2890 clusapi_SetGroupSetDependencyExpression( 2891 [ in ] HGROUPSET_RPC hGroupSet, 2892 [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression, 2893 [ out ] WERROR *rpc_status 2894 ); 2895 2896 /*****************/ 2897 /* Function 0xB2 */ 2898 2899 WERROR 2900 clusapi_RemoveGroupSetDependency( 2901 [ in ] HGROUPSET_RPC hGroupSet, 2902 [ in ] HGROUPSET_RPC hDependsOn, 2903 [ out ] WERROR *rpc_status 2904 ); 2905 2906 /*****************/ 2907 /* Function 0xB3 */ 2908 2909 WERROR 2910 clusapi_RemoveClusterGroupToGroupSetDependency( 2911 [ in ] HGROUP_RPC hGroup, 2912 [ in ] HGROUPSET_RPC hDependsOn, 2913 [ out ] WERROR *rpc_status 2914 ); 2915 2916 /*****************/ 2917 /* Function 0xB4 */ 2918 2919 WERROR 2920 clusapi_CreateGroupSetEnum( 2921 [ in ] HCLUSTER_RPC hCluster, 2922 [ out ] ENUM_LIST **ReturnEnum, 2923 [ out ] WERROR * rpc_status 2924 ); 2925 2926 /*****************/ 2927 /* Function 0xB5 */ 2928 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 2936 ); 2937 2938 /*****************/ 2939 /* Function 0xB6 */ 2940 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 2947 ); 2948 2949 /*****************/ 2950 /* Function 0xB7 */ 2951 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 2961 ); 2962} 2963