fuzzing: fix fuzz_stable_sort_r_unstable comparison
[samba.git] / librpc / idl / clusapi.idl
index 325baad7c9f160c5679cbf07fe049c9ddc85bbe3..7cc3f5ff8251f98976855fa1dece0477a4ff9247 100644 (file)
@@ -1,16 +1,24 @@
-import "security.idl";
+import "winreg.idl", "misc.idl";
 
 #include "idl_types.h"
 
 [
-       uuid(b97db8b2-4c63-11cf-bff6-08002be23f2f),
+       uuid("b97db8b2-4c63-11cf-bff6-08002be23f2f"),
        version(3.0),
        pointer_default(unique),
+       endpoint("ncacn_ip_tcp:"),
+       authservice("MSServerClusterMgmtAPI"),
        helpstring("Failover Cluster Management API (clusapi)")
 ]
+#define MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE 0x7FFFFFFF
        interface clusapi
 {
 #if 0
+       /*
+        * pidl does not yet have a real [context_handle] implementation, so we
+        * just use some defines here.
+        */
+
        typedef [context_handle] void *HCLUSTER_RPC;
        typedef [context_handle] void *HNODE_RPC;
        typedef [context_handle] void *HGROUP_RPC;
@@ -21,15 +29,15 @@ import "security.idl";
        typedef [context_handle] void *HNETINTERFACE_RPC;
        typedef [context_handle] void *HBATCH_PORT_RPC;
 #else
-       #define HCLUSTER_RPC policy_handle
-       #define HNODE_RPC policy_handle
-       #define HGROUP_RPC policy_handle
-       #define HRES_RPC policy_handle
-       #define HKEY_RPC policy_handle
-       #define HNOTIFY_RPC policy_handle
-       #define HNETWORK_RPC policy_handle
-       #define HNETINTERFACE_RPC policy_handle
-       #define HBATCH_PORT_RPC policy_handle
+#define HCLUSTER_RPC policy_handle
+#define HNODE_RPC policy_handle
+#define HGROUP_RPC policy_handle
+#define HRES_RPC policy_handle
+#define HKEY_RPC policy_handle
+#define HNOTIFY_RPC policy_handle
+#define HNETWORK_RPC policy_handle
+#define HNETINTERFACE_RPC policy_handle
+#define HBATCH_PORT_RPC policy_handle
 #endif
 
        typedef struct {
@@ -71,6 +79,13 @@ import "security.idl";
        /* Function 0x00 */
 
 #if 0
+       /*
+        * pidl cannot generate code for functions that return structures in
+        * IDL, therefore pretend the function is void and add the returned
+        * structure as an out parameter. This is what we do with pretty much
+        * all the Open calls right now in this interface - gd
+        */
+
        HCLUSTER_RPC
        clusapi_OpenCluster(
                [ out ] WERROR *Status
@@ -229,13 +244,18 @@ import "security.idl";
        /*****************/
        /* Function 0x09 */
 
+       typedef [v1_enum] enum {
+               CLUSTER_RESOURCE_DEFAULT_MONITOR        = 0x00000000,
+               CLUSTER_RESOURCE_SEPARATE_MONITOR       = 0x00000001
+       } clusapi_CreateResourceFlags;
+
 #if 0
        HRES_RPC
        clusapi_CreateResource(
                [ in ] HGROUP_RPC hGroup,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
-               [ in ] uint32 dwFlags,
+               [ in ] clusapi_CreateResourceFlags dwFlags,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status
        );
@@ -245,7 +265,7 @@ import "security.idl";
                [ in ] HGROUP_RPC hGroup,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
-               [ in ] uint32 dwFlags,
+               [ in ] clusapi_CreateResourceFlags dwFlags,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status,
                [ out ] HRES_RPC *hResource
@@ -445,14 +465,14 @@ import "security.idl";
 #if 0
        HKEY_RPC
        clusapi_GetRootKey(
-               [ in ] uint32 samDesired,
+               [ in ] winreg_AccessMask samDesired,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_GetRootKey(
-               [ in ] uint32 samDesired,
+               [ in ] winreg_AccessMask samDesired,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status,
                [ out ] HKEY_RPC *phKey
@@ -466,7 +486,7 @@ import "security.idl";
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
                [ in ] uint32 dwOptions,
-               [ in ] uint32 samDesired,
+               [ in ] winreg_AccessMask samDesired,
                [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
                [ out ] uint32 *lpdwDisposition,
                [ out ] WERROR *Status,
@@ -478,7 +498,7 @@ import "security.idl";
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
                [ in ] uint32 dwOptions,
-               [ in ] uint32 samDesired,
+               [ in ] winreg_AccessMask samDesired,
                [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
                [ out ] uint32 *lpdwDisposition,
                [ out ] WERROR *Status,
@@ -493,7 +513,7 @@ import "security.idl";
        clusapi_OpenKey(
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
-               [ in ] uint32 samDesired,
+               [ in ] winreg_AccessMask samDesired,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status
        );
@@ -502,7 +522,7 @@ import "security.idl";
        clusapi_OpenKey(
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
-               [ in ] uint32 samDesired,
+               [ in ] winreg_AccessMask samDesired,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status,
                [ out ] HKEY_RPC *phKey
@@ -527,7 +547,7 @@ import "security.idl";
        clusapi_SetValue(
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpValueName,
-               [ in ] uint32 dwType,
+               [ in ] winreg_Type dwType,
                [ in, size_is(cbData) ] uint8 *lpData,
                [ in ] uint32 cbData,
                [ out ] WERROR *rpc_status
@@ -550,7 +570,7 @@ import "security.idl";
        clusapi_QueryValue(
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpValueName,
-               [ out ] uint32 *lpValueType,
+               [ out ] winreg_Type *lpValueType,
                [ out, size_is(cbData) ] uint8 *lpData,
                [ in ] uint32 cbData,
                [ out ] uint32 *lpcbRequired,
@@ -575,7 +595,7 @@ import "security.idl";
                [ in ] HKEY_RPC hKey,
                [ in ] uint32 dwIndex,
                [ out, string ] [charset(UTF16)] uint16 **lpValueName,
-               [ out ] uint32 *lpType,
+               [ out ] winreg_Type *lpType,
                [ out, size_is(*lpcbData) ] uint8 *lpData,
                [ in, out ] uint32 *lpcbData,
                [ out ] uint32 *TotalSize,
@@ -772,10 +792,15 @@ import "security.idl";
        /*****************/
        /* Function 0x35 */
 
+       typedef [bitmap32bit] bitmap {
+               CLUSTER_GROUP_ENUM_CONTAINS             = 0x00000001,
+               CLUSTER_GROUP_ENUM_NODES                = 0x00000002
+       } ClusterGroupEnumType;
+
        WERROR
        clusapi_CreateGroupResourceEnum(
                [ in ] HGROUP_RPC hGroup,
-               [ in ] uint32 dwType,
+               [ in ] ClusterGroupEnumType dwType,
                [ out ] ENUM_LIST **ReturnEnum,
                [ out ] WERROR *rpc_status
        );
@@ -1023,10 +1048,83 @@ import "security.idl";
        /*****************/
        /* Function 0x49 */
 
+       typedef [v1_enum] enum {
+               CLUS_RESCLASS_UNKNOWN   = 0x00000000,
+               CLUS_RESCLASS_STORAGE   = 0x00000001,
+               CLUS_RESCLASS_NETWORK   = 0x00000002
+       } clusapi_ResourceClass;
+
+       typedef [public] struct {
+               clusapi_ResourceClass Class;
+               uint32 SubClass;
+       } CLUS_RESOURCE_CLASS_INFO;
+
+       typedef [v1_enum] enum {
+               CLUSCTL_RESOURCE_UNKNOWN                        = 0x01000000,
+               CLUSCTL_RESOURCE_GET_CHARACTERISTICS            = 0x01000005,
+               CLUSCTL_RESOURCE_GET_FLAGS                      = 0x01000009,
+               CLUSCTL_RESOURCE_GET_CLASS_INFO                 = 0x0100000D,
+               CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES      = 0x01000011,
+               CLUSCTL_RESOURCE_GET_NAME                       = 0x01000029,
+               CLUSCTL_RESOURCE_GET_RESOURCE_TYPE              = 0x0100002D,
+               CLUSCTL_RESOURCE_GET_ID                         = 0x01000039,
+               CLUSCTL_RESOURCE_ENUM_COMMON_PROPERTIES         = 0x01000051,
+               CLUSCTL_RESOURCE_GET_RO_COMMON_PROPERTIES       = 0x01000055,
+               CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES          = 0x01000059,
+               CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES          = 0x0140005E,
+               CLUSCTL_RESOURCE_VALIDATE_COMMON_PROPERTIES     = 0x01000061,
+               CLUSCTL_RESOURCE_GET_COMMON_PROPERTY_FMTS       = 0x01000065,
+               CLUSCTL_RESOURCE_ENUM_PRIVATE_PROPERTIES        = 0x01000079,
+               CLUSCTL_RESOURCE_GET_RO_PRIVATE_PROPERTIES      = 0x0100007D,
+               CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES         = 0x01000081,
+               CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES         = 0x01400086,
+               CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES    = 0x01000089,
+               CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTY_FMTS      = 0x0100008D,
+               CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT        = 0x014000A2,
+               CLUSCTL_RESOURCE_DELETE_REGISTRY_CHECKPOINT     = 0x014000A6,
+               CLUSCTL_RESOURCE_GET_REGISTRY_CHECKPOINTS       = 0x010000A9,
+               CLUSCTL_RESOURCE_ADD_CRYPTO_CHECKPOINT          = 0x014000AE,
+               CLUSCTL_RESOURCE_DELETE_CRYPTO_CHECKPOINT       = 0x014000B2,
+               CLUSCTL_RESOURCE_GET_CRYPTO_CHECKPOINTS         = 0x010000B5,
+               CLUSCTL_RESOURCE_UPGRADE_DLL                    = 0x014000BA,
+               CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_64BIT  = 0x014000BE,
+               CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_32BIT  = 0x014000C2,
+               CLUSCTL_RESOURCE_GET_NETWORK_NAME               = 0x01000169,
+               CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS   = 0x01000172,
+               CLUSCTL_RESOURCE_GET_DNS_NAME                   = 0x01000175,
+               CLUSCTL_RESOURCE_NETNAME_SET_PWD_INFO           = 0x0100017A,
+               CLUSCTL_RESOURCE_NETNAME_DELETE_CO              = 0x0100017E,
+               CLUSCTL_RESOURCE_NETNAME_VALIDATE_VCO           = 0x01000181,
+               CLUSCTL_RESOURCE_NETNAME_RESET_VCO              = 0x01000185,
+               CLUSCTL_RESOURCE_NETNAME_CREDS_UPDATED          = 0x01c0018a,
+               CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO          = 0x01000191,
+               CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID          = 0x01000199,
+               CLUSCTL_RESOURCE_IPADDRESS_RENEW_LEASE          = 0x014001BE,
+               CLUSCTL_RESOURCE_IPADDRESS_RELEASE_LEASE        = 0x014001C2,
+               CLUSCTL_RESOURCE_QUERY_MAINTENANCE_MODE         = 0x010001E1,
+               CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE           = 0x014001E6,
+               CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER        = 0x014001EA,
+               CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX       = 0x010001F1,
+               CLUSCTL_RESOURCE_STORAGE_GET_DIRTY              = 0x01000219,
+               CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS        = 0x01000211,
+               CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO = 0x01000225,
+               CLUSCTL_RESOURCE_VM_START_MIGRATION             = 0x01600004,
+               CLUSCTL_RESOURCE_VM_CANCEL_MIGRATION            = 0x01600008,
+               CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE       = 0x01400296,
+               CLUSCTL_RESOURCE_ENABLE_SHARED_VOLUME_DIRECTIO  = 0x0140028a,
+               CLUSCTL_RESOURCE_DISABLE_SHARED_VOLUME_DIRECTIO = 0x0140028e,
+               CLUSCTL_RESOURCE_SET_SHARED_VOLUME_BACKUP_MODE  = 0x0140029a,
+               CLUSCTL_RESOURCE_GET_RELATED_RESOURCE_NAMES     = 0x01001fad,
+               CLUSCTL_RESOURCE_POOL_GET_DRIVE_INFO            = 0x010002b5,
+               CLUSCTL_RESOURCE_CLOUD_WITNESS_UPDATE_TOKEN     = 0x014020e6,
+               CLUSCTL_RESOURCE_NETNAME_CHECK_OU_PERMISSIONS   = 0x07002121,
+               CLUSCTL_RESOURCE_NETNAME_CHECK_AD_STATE         = 0x07002125
+       } clusapi_ResourceControlCode;
+
        WERROR
        clusapi_ResourceControl(
                [ in ] HRES_RPC hResource,
-               [ in ] uint32 dwControlCode,
+               [ in ] clusapi_ResourceControlCode dwControlCode,
                [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
                [ in ] uint32 nInBufferSize,
                [ out, size_is(nOutBufferSize),
@@ -1059,11 +1157,53 @@ import "security.idl";
        /*****************/
        /* Function 0x4B */
 
+       typedef [v1_enum] enum {
+               CLUSCTL_RESOURCE_TYPE_UNKNOWN                           = 0x02000000,
+               CLUSCTL_RESOURCE_TYPE_GET_CHARACTERISTICS               = 0x02000005,
+               CLUSCTL_RESOURCE_TYPE_GET_FLAGS                         = 0x02000009,
+               CLUSCTL_RESOURCE_TYPE_GET_CLASS_INFO                    = 0x0200000D,
+               CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES         = 0x02000011,
+               CLUSCTL_RESOURCE_TYPE_GET_ARB_TIMEOUT                   = 0x02000015,
+               CLUSCTL_RESOURCE_TYPE_ENUM_COMMON_PROPERTIES            = 0x02000051,
+               CLUSCTL_RESOURCE_TYPE_GET_RO_COMMON_PROPERTIES          = 0x02000055,
+               CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTIES             = 0x02000059,
+               CLUSCTL_RESOURCE_TYPE_SET_COMMON_PROPERTIES             = 0x0240005E,
+               CLUSCTL_RESOURCE_TYPE_VALIDATE_COMMON_PROPERTIES        = 0x02000061,
+               CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTY_FMTS          = 0x02000065,
+               CLUSCTL_RESOURCE_TYPE_GET_COMMON_RESOURCE_PROPERTY_FMTS = 0x02000069,
+               CLUSCTL_RESOURCE_TYPE_ENUM_PRIVATE_PROPERTIES           = 0x02000079,
+               CLUSCTL_RESOURCE_TYPE_GET_RO_PRIVATE_PROPERTIES         = 0x0200007D,
+               CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES            = 0x02000081,
+               CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES            = 0x02400086,
+               CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES       = 0x02000089,
+               CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTY_FMTS         = 0x0200008D,
+               CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_RESOURCE_PROPERTY_FMTS= 0x02000091,
+               CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS       = 0x02000195,
+               CLUSCTL_RESOURCE_TYPE_NETNAME_VALIDATE_NETNAME          = 0x02000235,
+               CLUSCTL_RESOURCE_TYPE_VALIDATE_PATH                     = 0x02000231,
+               CLUSCTL_RESOURCE_TYPE_GEN_APP_VALIDATE_DIRECTORY        = 0x02000239,
+               CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DRIVELETTERS          = 0x020001ED,
+               CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX    = 0x020001F5,
+               CLUSCTL_RESOURCE_TYPE_STORAGE_REMAP_DRIVELETTER         = 0x02000201,
+               CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID                = 0x02000205,
+               CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE            = 0x02000209,
+               CLUSCTL_RESOURCE_TYPE_STORAGE_RELEASE_OWNERSHIP         = 0x0240020E,
+               CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CSV_FILE               = 0x1000229,
+               CLUSCTL_RESOURCE_TYPE_CLOUD_WITNESS_VALIDATE_CREDENTIALS= 0x020020e1,
+               CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_LOGDISKS = 0x02002149,
+               CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_TARGET_DATADISKS = 0x0200214D,
+               CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_SOURCE_DATADISKS = 0x02002151,
+               CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICA_VOLUMES   = 0x02002159,
+               CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_LOG_VOLUME        = 0x0200215D,
+               CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICATED_DISKS  = 0x02002155,
+               CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_RESOURCE_GROUP    = 0x02002161
+       } clusapi_ResourceTypeControlCode;
+
        WERROR
        clusapi_ResourceTypeControl(
                [ in ] HCLUSTER_RPC hCluster,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
-               [ in ] uint32 dwControlCode,
+               [ in ] clusapi_ResourceTypeControlCode dwControlCode,
                [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
                [ in ] uint32 nInBufferSize,
                [ out, size_is(nOutBufferSize),
@@ -1095,10 +1235,29 @@ import "security.idl";
        /*****************/
        /* Function 0x4D */
 
+       typedef [v1_enum] enum {
+               CLUSCTL_GROUP_UNKNOWN                           = 0x03000000,
+               CLUSCTL_GROUP_GET_CHARACTERISTICS               = 0x03000005,
+               CLUSCTL_GROUP_GET_FLAGS                         = 0x03000009,
+               CLUSCTL_GROUP_GET_NAME                          = 0x03000029,
+               CLUSCTL_GROUP_GET_ID                            = 0x03000039,
+               CLUSCTL_GROUP_ENUM_COMMON_PROPERTIES            = 0x03000051,
+               CLUSCTL_GROUP_GET_RO_COMMON_PROPERTIES          = 0x03000055,
+               CLUSCTL_GROUP_GET_COMMON_PROPERTIES             = 0x03000059,
+               CLUSCTL_GROUP_SET_COMMON_PROPERTIES             = 0x0340005E,
+               CLUSCTL_GROUP_VALIDATE_COMMON_PROPERTIES        = 0x03000061,
+               CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS          = 0x03000065,
+               CLUSCTL_GROUP_ENUM_PRIVATE_PROPERTIES           = 0x03000079,
+               CLUSCTL_GROUP_GET_RO_PRIVATE_PROPERTIES         = 0x0300007D,
+               CLUSCTL_GROUP_GET_PRIVATE_PROPERTIES            = 0x03000081,
+               CLUSCTL_GROUP_SET_PRIVATE_PROPERTIES            = 0x03400086,
+               CLUSCTL_GROUP_VALIDATE_PRIVATE_PROPERTIES       = 0x03000089
+       } clusapi_GroupControlCode;
+
        WERROR
        clusapi_GroupControl(
                [ in ] HGROUP_RPC hGroup,
-               [ in ] uint32 dwControlCode,
+               [ in ] clusapi_GroupControlCode dwControlCode,
                [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
                [ in ] uint32 nInBufferSize,
                [ out, size_is(nOutBufferSize),
@@ -1130,10 +1289,29 @@ import "security.idl";
        /*****************/
        /* Function 0x4F */
 
+       typedef [v1_enum] enum {
+               CLUSCTL_NODE_UNKNOWN                            = 0x04000000,
+               CLUSCTL_NODE_GET_CHARACTERISTICS                = 0x04000005,
+               CLUSCTL_NODE_GET_FLAGS                          = 0x04000009,
+               CLUSCTL_NODE_GET_NAME                           = 0x04000029,
+               CLUSCTL_NODE_GET_ID                             = 0x04000039,
+               CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME   = 0x04000041,
+               CLUSCTL_NODE_ENUM_COMMON_PROPERTIES             = 0x04000051,
+               CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES           = 0x04000055,
+               CLUSCTL_NODE_GET_COMMON_PROPERTIES              = 0x04000059,
+               CLUSCTL_NODE_SET_COMMON_PROPERTIES              = 0x0440005E,
+               CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES         = 0x04000061,
+               CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES            = 0x04000079,
+               CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES          = 0x0400007D,
+               CLUSCTL_NODE_GET_PRIVATE_PROPERTIES             = 0x04000081,
+               CLUSCTL_NODE_SET_PRIVATE_PROPERTIES             = 0x04400086,
+               CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES        = 0x04000089
+       } clusapi_NodeControlCode;
+
        WERROR
        clusapi_NodeControl(
                [ in ] HNODE_RPC hNode,
-               [ in ] uint32 dwControlCode,
+               [ in ] clusapi_NodeControlCode dwControlCode,
                [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
                [ in ] uint32 nInBufferSize,
                [ out, size_is(nOutBufferSize),
@@ -1179,10 +1357,18 @@ import "security.idl";
        /*****************/
        /* Function 0x53 */
 
+       typedef [v1_enum] enum {
+               ClusterNetworkUnavailable       = 0x00000000,
+               ClusterNetworkDown              = 0x00000001,
+               ClusterNetworkPartitioned       = 0x00000002,
+               ClusterNetworkUp                = 0x00000003,
+               ClusterNetworkStateUnknown      = 0xFFFFFFFF
+       } clusapi_ClusterNetworkState;
+
        WERROR
        clusapi_GetNetworkState(
                [ in ] HNETWORK_RPC hNetwork,
-               [ out ] uint32 *State,
+               [ out ] clusapi_ClusterNetworkState *State,
                [ out ] WERROR *rpc_status
        );
 
@@ -1317,10 +1503,18 @@ import "security.idl";
        /*****************/
        /* Function 0x5E */
 
+       typedef [v1_enum] enum {
+               ClusterNetInterfaceFailed       = 0x00000000,
+               ClusterNetInterfaceUnreachable  = 0x00000001,
+               ClusterNetInterfaceUnavailable  = 0x00000002,
+               ClusterNetInterfaceUp           = 0x00000003,
+               ClusterNetInterfaceStateUnknown = 0xFFFFFFFF
+       } clusapi_ClusterNetInterfaceState;
+
        WERROR
        clusapi_GetNetInterfaceState(
                [ in ] HNETINTERFACE_RPC hNetInterface,
-               [ out ] uint32 *State,
+               [ out ] clusapi_ClusterNetInterfaceState *State,
                [ out ] WERROR *rpc_status
        );
 
@@ -1434,10 +1628,15 @@ import "security.idl";
        /*****************/
        /* Function 0x67 */
 
+       typedef [bitmap32bit] bitmap {
+               CLUSTER_RESOURCE_TYPE_ENUM_NODES        = 0x00000001,
+               CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES    = 0x00000002
+       } ClusterResTypeEnumType;
+
        WERROR
        clusapi_CreateResTypeEnum(
                [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
-               [ in ] uint32 dwType,
+               [ in ] ClusterResTypeEnumType dwType,
                [ out ] ENUM_LIST **ReturnEnum,
                [ out ] WERROR *rpc_status
        );
@@ -1472,10 +1671,81 @@ import "security.idl";
        /*****************/
        /* Function 0x6A */
 
+       typedef [v1_enum] enum {
+               CLUSCTL_CLUSTER_UNKNOWN                         = 0x07000000,
+               CLUSCTL_CLUSTER_GET_FQDN                        = 0x0700003D,
+               CLUSCTL_CLUSTER_CHECK_VOTER_EVICT               = 0x07000045,
+               CLUSCTL_CLUSTER_CHECK_VOTER_DOWN                = 0x07000049,
+               CLUSCTL_CLUSTER_SHUTDOWN                        = 0x0700004D,
+               CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES          = 0x07000051,
+               CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES        = 0x07000055,
+               CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES           = 0x07000059,
+               CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES           = 0x0740005E,
+               CLUSCTL_CLUSTER_VALIDATE_COMMON_PROPERTIES      = 0x07000061,
+               CLUSCTL_CLUSTER_GET_COMMON_PROPERTY_FMTS        = 0x07000065,
+               CLUSCTL_CLUSTER_ENUM_PRIVATE_PROPERTIES         = 0x07000079,
+               CLUSCTL_CLUSTER_GET_RO_PRIVATE_PROPERTIES       = 0x0700007D,
+               CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTIES          = 0x07000081,
+               CLUSCTL_CLUSTER_SET_PRIVATE_PROPERTIES          = 0x07400086,
+               CLUSCTL_CLUSTER_VALIDATE_PRIVATE_PROPERTIES     = 0x07000089,
+               CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID            = 0x07000291,
+               CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION         = 0x074000ce,
+               CLUSCTL_CLUSTER_CLEAR_UPGRADE_IN_PROGRESS       = 0x074000d2,
+               CLUSCTL_CLUSTER_IS_READY_FOR_UPGRADE            = 0x070000d5
+       } clusapi_ClusterControlCode;
+
+       typedef [v1_enum] enum {
+               CLUSPROP_SYNTAX_ENDMARK = 0x00000000,
+               CLUSPROP_SYNTAX_NAME = 0x00040003,
+               CLUSPROP_SYNTAX_RESCLASS = 0x00020002,
+               CLUSPROP_SYNTAX_LIST_VALUE_SZ = 0x00010003,
+               CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = 0x00010004,
+               CLUSPROP_SYNTAX_LIST_VALUE_DWORD = 0x00010002,
+               CLUSPROP_SYNTAX_LIST_VALUE_BINARY = 0x00010001,
+               CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = 0x00010005,
+               CLUSPROP_SYNTAX_LIST_VALUE_LONG = 0x00010007,
+               CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = 0x00010008,
+               CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = 0x00010009,
+               CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = 0x0001000a,
+               CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = 0x00010006,
+               CLUSPROP_SYNTAX_LIST_VALUE_WORD = 0x0001000b,
+               CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = 0x0001000c,
+               CLUSPROP_SYNTAX_DISK_SIGNATURE = 0x00050002,
+               CLUSPROP_SYNTAX_SCSI_ADDRESS = 0x00060002,
+               CLUSPROP_SYNTAX_DISK_NUMBER = 0x00070002,
+               CLUSPROP_SYNTAX_PARTITION_INFO = 0x00080001,
+               CLUSPROP_SYNTAX_DISK_SERIALNUMBER = 0x000a0003,
+               CLUSPROP_SYNTAX_DISK_GUID = 0x000b0003,
+               CLUSPROP_SYNTAX_DISK_SIZE = 0x000c0006,
+               CLUSPROP_SYNTAX_PARTITION_INFO_EX = 0x000d0001
+       } CLUSTER_PROPERTY_SYNTAX;
+
+       typedef struct {
+               CLUSTER_PROPERTY_SYNTAX Syntax;
+               uint32 Size;
+               [subcontext(0),subcontext_size(Size)] [flag(NDR_REMAINING)] DATA_BLOB Buffer;
+               [flag(NDR_ALIGN4)] DATA_BLOB Padding;
+       } clusapi_propertyValues;
+
+       typedef struct {
+               [value(CLUSPROP_SYNTAX_NAME)] CLUSTER_PROPERTY_SYNTAX syntax_name;
+               [value(strlen_m_term(buffer)*2)] uint32 size;
+               nstring buffer;
+               [flag(NDR_ALIGN2)] DATA_BLOB padding;
+               clusapi_propertyValues PropertyValues;
+               [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
+       } clusapi_propertyValue;
+
+       typedef [public] struct {
+               uint32 propertyCount;
+               clusapi_propertyValue propertyValues[propertyCount];
+               [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
+       } clusapi_PROPERTY_LIST;
+
        WERROR
        clusapi_ClusterControl(
                [ in ] HCLUSTER_RPC hCluster,
-               [ in ] uint32 dwControlCode,
+               [ in ] clusapi_ClusterControlCode dwControlCode,
                [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
                [ in ] uint32 nInBufferSize,
                [ out, size_is(nOutBufferSize),
@@ -1586,17 +1856,28 @@ import "security.idl";
 
        /*****************/
        /* Function 0x75 */
+
+       typedef [bitmap32bit] bitmap {
+               CLUSAPI_READ_ACCESS             = 0x00000001,
+               CLUSAPI_CHANGE_ACCESS           = 0x00000002,
+               CLUSAPI_GENERIC_READ            = 0x80000000,
+               CLUSAPI_GENERIC_WRITE           = 0x40000000,
+               CLUSAPI_GENERIC_EXECUTE         = 0x20000000,
+               CLUSAPI_GENERIC_ALL             = 0x10000000,
+               CLUSAPI_MAXIMUM_ALLOWED         = 0x02000000
+       } clusapi_DesiredAccessMask;
+
 #if 0
        HCLUSTER_RPC
        clusapi_OpenClusterEx(
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status
        );
 #else
        void
        clusapi_OpenClusterEx(
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] HCLUSTER_RPC *hCluster
@@ -1609,7 +1890,7 @@ import "security.idl";
        HNODE_RPC
        clusapi_OpenNodeEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status
@@ -1618,7 +1899,7 @@ import "security.idl";
        void
        clusapi_OpenNodeEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status,
@@ -1631,7 +1912,7 @@ import "security.idl";
        HGROUP_RPC
        clusapi_OpenGroupEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status
@@ -1640,7 +1921,7 @@ import "security.idl";
        void
        clusapi_OpenGroupEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status,
@@ -1653,7 +1934,7 @@ import "security.idl";
        HRES_RPC
        clusapi_OpenResourceEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status
@@ -1662,7 +1943,7 @@ import "security.idl";
        void
        clusapi_OpenResourceEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status,
@@ -1675,7 +1956,7 @@ import "security.idl";
        HNETWORK_RPC
        clusapi_OpenNetworkEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status
@@ -1684,7 +1965,7 @@ import "security.idl";
        void
        clusapi_OpenNetworkEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status,
@@ -1697,7 +1978,7 @@ import "security.idl";
        HNETINTERFACE_RPC
        clusapi_OpenNetInterfaceEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status
@@ -1706,7 +1987,7 @@ import "security.idl";
        void
        clusapi_OpenNetInterfaceEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
                [ out ] WERROR *Status,
                [ out ] WERROR *rpc_status,
@@ -1742,7 +2023,7 @@ import "security.idl";
        WERROR
        clusapi_CreateEnumEx(
                [in] HCLUSTER_RPC hCluster,
-               [in] uint32 dwType,
+               [in] ClusterEnumType dwType,
                [in] uint32 dwOptions,
                [out] ENUM_LIST **ReturnIdEnum,
                [out] ENUM_LIST **ReturnNameEnum,
@@ -1891,7 +2172,7 @@ import "security.idl";
 #endif
 
        typedef struct {
-               uint32 dwObjectType;      // really of type CLUSTER_OBJECT_TYPE_RPC
+               uint32 dwObjectType;      /* really of type CLUSTER_OBJECT_TYPE_RPC */
                hyper FilterFlags;
        } NOTIFY_FILTER_AND_TYPE_RPC;
 
@@ -1913,9 +2194,9 @@ import "security.idl";
        /*****************/
        /* Function 0x89 */
 
-       //
-       // Notify interface V2 functions
-       //
+       /*
+        * Notify interface V2 functions
+        */
 #if 0
        HNOTIFY_RPC
        clusapi_CreateNotifyV2(
@@ -2127,32 +2408,6 @@ import "security.idl";
                CLUSPROP_FORMAT_FILETIME = 0x000c
        } CLUSTER_PROPERTY_FORMAT;
 
-       typedef enum {
-               CLUSPROP_SYNTAX_ENDMARK = 0x00000000,
-               CLUSPROP_SYNTAX_NAME = 0x00040003,
-               CLUSPROP_SYNTAX_RESCLASS = 0x00020002,
-               CLUSPROP_SYNTAX_LIST_VALUE_SZ = 0x00010003,
-               CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = 0x00010004,
-               CLUSPROP_SYNTAX_LIST_VALUE_DWORD = 0x00010002,
-               CLUSPROP_SYNTAX_LIST_VALUE_BINARY = 0x00010001,
-               CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = 0x00010005,
-               CLUSPROP_SYNTAX_LIST_VALUE_LONG = 0x00010007,
-               CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = 0x00010008,
-               CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = 0x00010009,
-               CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = 0x0001000a,
-               CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = 0x00010006,
-               CLUSPROP_SYNTAX_LIST_VALUE_WORD = 0x0001000b,
-               CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = 0x0001000c,
-               CLUSPROP_SYNTAX_DISK_SIGNATURE = 0x00050002,
-               CLUSPROP_SYNTAX_SCSI_ADDRESS = 0x00060002,
-               CLUSPROP_SYNTAX_DISK_NUMBER = 0x00070002,
-               CLUSPROP_SYNTAX_PARTITION_INFO = 0x00080001,
-               CLUSPROP_SYNTAX_DISK_SERIALNUMBER = 0x000a0003,
-               CLUSPROP_SYNTAX_DISK_GUID = 0x000b0003,
-               CLUSPROP_SYNTAX_DISK_SIZE = 0x000c0006,
-               CLUSPROP_SYNTAX_PARTITION_INFO_EX = 0x000d0001
-       } CLUSTER_PROPERTY_SYNTAX;
-
        typedef enum {
                CLUS_CHAR_UNKNOWN = 0x00000000,
                CLUS_CHAR_QUORUM = 0x00000001,
@@ -2344,4 +2599,364 @@ import "security.idl";
                DiskIdUnKnown = 0x00001388
        } CLUSDSK_DISKID_ENUM;
 #endif
+
+       /*****************/
+       /* Function 0x94 */
+
+       WERROR
+       Opnum148NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x95 */
+
+       WERROR
+       Opnum149otUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x96 */
+
+       WERROR
+       Opnum150NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x97 */
+
+       WERROR
+       Opnum151NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x98 */
+
+       WERROR
+       Opnum152NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x99 */
+
+       WERROR
+       Opnum153NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x9A */
+
+       WERROR
+       Opnum154NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x9B */
+
+       WERROR
+       clusapi_AddNotifyResourceTypeV2(
+               [ in ] HNOTIFY_RPC hNotify,
+               [ in ] hyper filter,
+               [ in ] uint32 dwNotifyKey,
+               [ in, string ] [charset(UTF16)] uint16 *resTypeName,
+               [ in ] uint32 dwVersion,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x9C */
+
+       WERROR
+       Opnum156NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x9D */
+
+       WERROR
+       clusapi_ExecuteReadBatchEx(
+               [in] HKEY_RPC hKey,
+               [in] uint32 cbInData,
+               [in, size_is(cbInData)] uint8* lpInData,
+               [in] uint32 flags,
+               [out] uint32* cbOutData,
+               [out, size_is(,*cbOutData)] uint8** lpOutData,
+               [out] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x9E */
+
+       WERROR
+       Opnum158NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x9F */
+
+       WERROR
+       Opnum159NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0xA0 */
+
+       WERROR
+       Opnum160NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0xA1 */
+
+       WERROR
+       Opnum161NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0xA2 */
+
+       WERROR
+       Opnum162NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0xA3 */
+
+#define HGROUPSET_RPC policy_handle
+#if 0
+       typedef [context_handle] void *HGROUPSET_RPC;
+#endif
+#if 0
+       HGROUPSET_RPC
+       clusapi_CreateGroupSet (
+               [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
+       );
+#else
+       void
+       clusapi_CreateGroupSet (
+               [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
+               [ out ] HGROUPSET_RPC *hGroupSet
+       );
+#endif
+
+       /*****************/
+       /* Function 0xA4 */
+#if 0
+       HGROUPSET_RPC
+       clusapi_OpenGroupSet(
+               [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
+       );
+#else
+       void
+       clusapi_OpenGroupSet(
+               [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
+               [ out ] HGROUPSET_RPC *hGroupSet
+       );
+#endif
+
+       /*****************/
+       /* Function 0xA5 */
+
+       WERROR
+       clusapi_CloseGroupSet(
+               [ in, out ] HGROUPSET_RPC *GroupSet
+       );
+
+       /*****************/
+       /* Function 0xA6 */
+
+       WERROR
+       clusapi_DeleteGroupSet(
+               [ in ] HGROUPSET_RPC GroupSet,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xA7 */
+
+       WERROR
+       clusapi_AddGroupToGroupSet(
+               [ in ] HGROUPSET_RPC GroupSet,
+               [ in ] HGROUP_RPC Group,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xA8 */
+
+       WERROR
+       clusapi_RemoveGroupFromGroupSet(
+               [ in ] HGROUP_RPC Group,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xA9 */
+
+       WERROR
+       clusapi_MoveGroupToGroupSet(
+               [ in ] HGROUPSET_RPC GroupSet,
+               [ in ] HGROUP_RPC Group,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xAA */
+
+       WERROR
+       Opnum170NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0xAB */
+
+       WERROR
+       clusapi_AddGroupSetDependency(
+               [ in ] HGROUPSET_RPC DependentGroupSet,
+               [ in ] HGROUPSET_RPC ProviderGroupSet,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xAC */
+
+       WERROR
+       clusapi_AddGroupToGroupSetDependency(
+               [ in ] HGROUP_RPC DependentGroup,
+               [ in ] HGROUPSET_RPC ProviderGroupSet,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xAD */
+
+       typedef [v1_enum] enum {
+               CLUSCTL_GROUPSET_GET_ID                         = 0x08000039,
+               CLUSCTL_GROUPSET_GET_RO_COMMON_PROPERTIES       = 0x08000055,
+               CLUSCTL_GROUPSET_GET_COMMON_PROPERTIES          = 0x08000059,
+               CLUSCTL_GROUPSET_GET_GROUPS                     = 0x08002D71,
+               CLUSCTL_GROUPSET_GET_PROVIDER_GROUPS            = 0x08002D75,
+               CLUSCTL_GROUPSET_GET_PROVIDER_GROUPSETS         = 0x08002D79,
+               CLUSCTL_GROUPSET_SET_COMMON_PROPERTIES          = 0x0840005E
+       } clusapi_GroupSetControlCode;
+
+       WERROR
+       clusapi_NodeGroupSetControl(
+               [ in ] HGROUPSET_RPC hGroupSet,
+               [ in ] HNODE_RPC hNode,
+               [ in ] clusapi_GroupSetControlCode dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize), length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in, range(0, MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE)] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xAE */
+
+       WERROR
+       clusapi_GroupSetControl(
+               [ in ] HGROUPSET_RPC hGroupSet,
+               [ in ] clusapi_GroupSetControlCode dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize), length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in, range(0, 0x7FFFFFFF)] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xAF */
+
+       WERROR
+       clusapi_SetGroupDependencyExpression(
+               [ in ] HGROUP_RPC hGroup,
+               [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xB0 */
+
+       WERROR
+       clusapi_RemoveClusterGroupDependency(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] HGROUP_RPC hDependsOn,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xB1 */
+
+       WERROR
+       clusapi_SetGroupSetDependencyExpression(
+               [ in ] HGROUPSET_RPC hGroupSet,
+               [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xB2 */
+
+       WERROR
+       clusapi_RemoveGroupSetDependency(
+               [ in ] HGROUPSET_RPC hGroupSet,
+               [ in ] HGROUPSET_RPC hDependsOn,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xB3 */
+
+       WERROR
+       clusapi_RemoveClusterGroupToGroupSetDependency(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] HGROUPSET_RPC hDependsOn,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xB4 */
+
+       WERROR
+       clusapi_CreateGroupSetEnum(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ out ] ENUM_LIST **ReturnEnum,
+               [ out ] WERROR * rpc_status
+       );
+
+       /*****************/
+       /* Function 0xB5 */
+
+       WERROR
+       clusapi_CreateNetInterfaceEnum(
+               [in] HCLUSTER_RPC hCluster,
+               [in, string] [charset(UTF16)] uint16 *lpszNodeName,
+               [in, string] [charset(UTF16)] uint16 *lpszNetworkName,
+               [out] ENUM_LIST **ReturnEnum,
+               [out] WERROR * rpc_status
+       );
+
+       /*****************/
+       /* Function 0xB6 */
+
+       WERROR
+       clusapi_ChangeCsvStateEx(
+               [ in ] HRES_RPC hResource,
+               [ in ] uint32 dwState,
+               [ in, string ] [charset(UTF16)] uint16 *lpszVolumeName,
+               [ out ] WERROR *rpc_status
+       );
+
+       /*****************/
+       /* Function 0xB7 */
+
+       WERROR
+       clusapi_AddGroupToGroupSetEx(
+               [ in ] HGROUPSET_RPC GroupSet,
+               [ in ] HGROUP_RPC Group,
+               [ in ] uint32 FaultDomain,
+               [ in ] uint32 UpdateDomain,
+               [ in ] boolean8 UseDomains,
+               [ in ] uint32 *Reserved,
+               [ out ] WERROR *rpc_status
+       );
 }