tests/krb5: Calculate correct gMSA password to fix flapping test
[samba.git] / librpc / idl / clusapi.idl
index 54068fbdd4d55f0e11521efcf76ce54f76e571fd..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,14 +79,21 @@ 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 ] error_status_t *Status
+               [ out ] WERROR *Status
        );
 #else
        void
        clusapi_OpenCluster(
-               [ out ] error_status_t *Status,
+               [ out ] WERROR *Status,
                [ out ] HCLUSTER_RPC *Cluster
        );
 #endif
@@ -86,7 +101,7 @@ import "security.idl";
        /*****************/
        /* Function 0x01 */
 
-       error_status_t
+       WERROR
        clusapi_CloseCluster(
                [ in, out ] HCLUSTER_RPC *Cluster
        );
@@ -94,16 +109,16 @@ import "security.idl";
        /*****************/
        /* Function 0x02 */
 
-       error_status_t
+       WERROR
        clusapi_SetClusterName(
                [ in, string ] [charset(UTF16)] uint16 *NewClusterName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x03 */
 
-       error_status_t
+       WERROR
        clusapi_GetClusterName(
                [ out, string ] [charset(UTF16)] uint16 **ClusterName,
                [ out, string ] [charset(UTF16)] uint16 **NodeName
@@ -112,7 +127,7 @@ import "security.idl";
        /*****************/
        /* Function 0x04 */
 
-       error_status_t
+       WERROR
        clusapi_GetClusterVersion(
                [ out ] uint16 *lpwMajorVersion,
                [ out ] uint16 *lpwMinorVersion,
@@ -124,27 +139,38 @@ import "security.idl";
        /*****************/
        /* Function 0x05 */
 
-       error_status_t
+       WERROR
        clusapi_GetQuorumResource(
                [ out, string ] [charset(UTF16)] uint16 **lpszResourceName,
                [ out, string ] [charset(UTF16)] uint16 **lpszDeviceName,
                [ out ] uint32 *pdwMaxQuorumLogSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x06 */
 
-       error_status_t
+       WERROR
        clusapi_SetQuorumResource(
                [ in ] HRES_RPC hResource,
                [ in, string ] [charset(UTF16)] uint16 *lpszDeviceName,
                [ in ] uint32    dwMaxQuorumLogSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
+       typedef [bitmap32bit] bitmap {
+               CLUSTER_ENUM_NODE                       = 0x00000001,
+               CLUSTER_ENUM_RESTYPE                    = 0x00000002,
+               CLUSTER_ENUM_RESOURCE                   = 0x00000004,
+               CLUSTER_ENUM_GROUP                      = 0x00000008,
+               CLUSTER_ENUM_NETWORK                    = 0x00000010,
+               CLUSTER_ENUM_NETINTERFACE               = 0x00000020,
+               CLUSTER_ENUM_INTERNAL_NETWORK           = 0x80000000,
+               CLUSTER_ENUM_SHARED_VOLUME_RESOURCE     = 0x40000000
+       } ClusterEnumType;
+
        typedef struct {
-               uint32 Type;
+               ClusterEnumType Type;
                [string] [charset(UTF16)] uint16 *Name;
        } ENUM_ENTRY;
 
@@ -189,11 +215,11 @@ import "security.idl";
        /*****************/
        /* Function 0x07 */
 
-       error_status_t
+       WERROR
        clusapi_CreateEnum(
-               [ in ] uint32 dwType,
+               [ in ] ClusterEnumType dwType,
                [ out ] ENUM_LIST **ReturnEnum,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
@@ -203,30 +229,35 @@ import "security.idl";
        HRES_RPC
        clusapi_OpenResource(
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenResource(
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HRES_RPC *hResource
        );
 #endif
        /*****************/
        /* 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,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ in ] clusapi_CreateResourceFlags dwFlags,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
@@ -234,25 +265,25 @@ import "security.idl";
                [ in ] HGROUP_RPC hGroup,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
-               [ in ] uint32 dwFlags,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ in ] clusapi_CreateResourceFlags dwFlags,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HRES_RPC *hResource
        );
 #endif
        /*****************/
        /* Function 0x0A */
 
-       error_status_t
+       WERROR
        clusapi_DeleteResource(
                [ in ] HRES_RPC hResource,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x0B */
 
-       error_status_t
+       WERROR
        clusapi_CloseResource(
                [ in, out ] HRES_RPC *Resource
        );
@@ -260,163 +291,173 @@ import "security.idl";
        /*****************/
        /* Function 0x0C */
 
-       error_status_t
+       typedef [v1_enum] enum {
+               ClusterResourceInitializing     = 0x00000001,
+               ClusterResourceOnline           = 0x00000002,
+               ClusterResourceOffline          = 0x00000003,
+               ClusterResourceFailed           = 0x00000004,
+               ClusterResourceOnlinePending    = 0x00000081,
+               ClusterResourceOfflinePending   = 0x00000082,
+               ClusterResourceStateUnknown     = 0xFFFFFFFF
+       } clusapi_ClusterResourceState;
+
+       WERROR
        clusapi_GetResourceState(
                [ in ] HRES_RPC hResource,
-               [ out ] uint32 *State,
+               [ out ] clusapi_ClusterResourceState *State,
                [ out, string ] [charset(UTF16)] uint16 **NodeName,
                [ out, string ] [charset(UTF16)] uint16 **GroupName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x0D */
 
-       error_status_t
+       WERROR
        clusapi_SetResourceName(
                [ in ] HRES_RPC hResource,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x0E */
 
-       error_status_t
+       WERROR
        clusapi_GetResourceId(
                [ in ] HRES_RPC hResource,
                [ out, string ] [charset(UTF16)] uint16 **pGuid,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x0F */
 
-       error_status_t
+       WERROR
        clusapi_GetResourceType(
                [ in ] HRES_RPC hResource,
                [ out, string ] [charset(UTF16)] uint16 **lpszResourceType,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x10 */
 
-       error_status_t
+       WERROR
        clusapi_FailResource(
                [ in ] HRES_RPC hResource,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x11 */
 
-       error_status_t
+       WERROR
        clusapi_OnlineResource(
                [ in ] HRES_RPC hResource,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x12 */
 
-       error_status_t
+       WERROR
        clusapi_OfflineResource(
                [ in ] HRES_RPC hResource,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x13 */
 
-       error_status_t
+       WERROR
        clusapi_AddResourceDependency(
                [ in ] HRES_RPC hResource,
                [ in ] HRES_RPC hDependsOn,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x14 */
 
-       error_status_t
+       WERROR
        clusapi_RemoveResourceDependency(
                [ in ] HRES_RPC hResource,
                [ in ] HRES_RPC hDependsOn,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x15 */
 
-       error_status_t
+       WERROR
        clusapi_CanResourceBeDependent(
                [ in ] HRES_RPC hResource,
                [ in ] HRES_RPC hResourceDependent,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x16 */
 
-       error_status_t
+       WERROR
        clusapi_CreateResEnum(
                [ in ] HRES_RPC hResource,
                [ in ] uint32 dwType,
                [ out ] ENUM_LIST **ReturnEnum,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x17 */
 
-       error_status_t
+       WERROR
        clusapi_AddResourceNode(
                [ in ] HRES_RPC hResource,
                [ in ] HNODE_RPC hNode,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x18 */
 
-       error_status_t
+       WERROR
        clusapi_RemoveResourceNode(
                [ in ] HRES_RPC hResource,
                [ in ] HNODE_RPC hNode,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x19 */
 
-       error_status_t
+       WERROR
        clusapi_ChangeResourceGroup(
                [ in ] HRES_RPC hResource,
                [ in ] HGROUP_RPC hGroup,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x1A */
 
-       error_status_t
+       WERROR
        clusapi_CreateResourceType(
                [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
                [ in, string ] [charset(UTF16)] uint16 *lpszDisplayName,
                [ in, string ] [charset(UTF16)] uint16 *lpszDllName,
                [ in ] uint32 dwLooksAlive,
                [ in ] uint32 dwIsAlive,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x1B */
 
-       error_status_t
+       WERROR
        clusapi_DeleteResourceType(
                [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
@@ -424,16 +465,16 @@ import "security.idl";
 #if 0
        HKEY_RPC
        clusapi_GetRootKey(
-               [ in ] uint32 samDesired,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ in ] winreg_AccessMask samDesired,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_GetRootKey(
-               [ in ] uint32 samDesired,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ in ] winreg_AccessMask samDesired,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HKEY_RPC *phKey
        );
 #endif
@@ -445,11 +486,11 @@ 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 ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
@@ -457,11 +498,11 @@ 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 ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HKEY_RPC *phKey
        );
 #endif
@@ -472,99 +513,99 @@ import "security.idl";
        clusapi_OpenKey(
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
-               [ in ] uint32 samDesired,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ in ] winreg_AccessMask samDesired,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenKey(
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
-               [ in ] uint32 samDesired,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ in ] winreg_AccessMask samDesired,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HKEY_RPC *phKey
        );
 #endif
        /*****************/
        /* Function 0x1F */
 
-       error_status_t
+       WERROR
        clusapi_EnumKey(
                [ in ] HKEY_RPC hKey,
                [ in ] uint32 dwIndex,
                [ out, string ] [charset(UTF16)] uint16 **KeyName,
                [ out ] NTTIME *lpftLastWriteTime,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x20 */
 
-       error_status_t
+       WERROR
        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 ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x21 */
 
-       error_status_t
+       WERROR
        clusapi_DeleteValue(
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpValueName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x22 */
 
-       error_status_t
+       WERROR
        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,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x23 */
 
-       error_status_t
+       WERROR
        clusapi_DeleteKey(
                [ in ] HKEY_RPC hKey,
                [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x24 */
 
-       error_status_t
+       WERROR
        clusapi_EnumValue(
                [ 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,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x25 */
 
-       error_status_t
+       WERROR
        clusapi_CloseKey(
                [ in, out ] HKEY_RPC *pKey
        );
@@ -572,7 +613,7 @@ import "security.idl";
        /*****************/
        /* Function 0x26 */
 
-       error_status_t
+       WERROR
        clusapi_QueryInfoKey(
                [ in ] HKEY_RPC hKey,
                [ out ] uint32 *lpcSubKeys,
@@ -582,29 +623,29 @@ import "security.idl";
                [ out ] uint32 *lpcbMaxValueLen,
                [ out ] uint32 *lpcbSecurityDescriptor,
                [ out ] NTTIME *lpftLastWriteTime,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x27 */
 
-       error_status_t
+       WERROR
        clusapi_SetKeySecurity(
                [ in ] HKEY_RPC hKey,
                [ in ] uint32 SecurityInformation,
                [ in ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x28 */
 
-       error_status_t
+       WERROR
        clusapi_GetKeySecurity(
                [ in ] HKEY_RPC hKey,
                [ in ] uint32 SecurityInformation,
                [ in, out ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
@@ -613,15 +654,15 @@ import "security.idl";
        HGROUP_RPC
        clusapi_OpenGroup(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenGroup(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HGROUP_RPC *hGroup
        );
 #endif
@@ -631,32 +672,32 @@ import "security.idl";
        HGROUP_RPC
        clusapi_CreateGroup(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_CreateGroup(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HGROUP_RPC *hGroup
        );
 #endif
        /*****************/
        /* Function 0x2B */
 
-       error_status_t
+       WERROR
        clusapi_DeleteGroup(
                [ in ] HGROUP_RPC Group,
                [ in ] boolean8 force,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x2C */
 
-       error_status_t
+       WERROR
        clusapi_CloseGroup(
                [ in, out ] HGROUP_RPC *Group
        );
@@ -664,101 +705,115 @@ import "security.idl";
        /*****************/
        /* Function 0x2D */
 
-       error_status_t
+       typedef [v1_enum] enum {
+               ClusterGroupOnline              = 0x00000000,
+               ClusterGroupOffline             = 0x00000001,
+               ClusterGroupFailed              = 0x00000002,
+               ClusterGroupPartialOnline       = 0x00000003,
+               ClusterGroupPending             = 0x00000004,
+               ClusterGroupStateUnknown        = 0xFFFFFFFF
+       } clusapi_ClusterGroupState;
+
+       WERROR
        clusapi_GetGroupState(
                [ in ] HGROUP_RPC hGroup,
-               [ out ] uint32 *State,
+               [ out ] clusapi_ClusterGroupState *State,
                [ out, string ] [charset(UTF16)] uint16 **NodeName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x2E */
 
-       error_status_t
+       WERROR
        clusapi_SetGroupName(
                [ in ] HGROUP_RPC hGroup,
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x2F */
 
-       error_status_t
+       WERROR
        clusapi_GetGroupId(
                [ in ] HGROUP_RPC hGroup,
                [ out, string ] [charset(UTF16)] uint16 **pGuid,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x30 */
 
-       error_status_t
+       WERROR
        clusapi_GetNodeId(
                [ in ] HNODE_RPC hNode,
                [ out, string ] [charset(UTF16)] uint16 **pGuid,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x31 */
 
-       error_status_t
+       WERROR
        clusapi_OnlineGroup(
                [ in ] HGROUP_RPC hGroup,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x32 */
 
-       error_status_t
+       WERROR
        clusapi_OfflineGroup(
                [ in ] HGROUP_RPC hGroup,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x33 */
 
-       error_status_t
+       WERROR
        clusapi_MoveGroup(
                [ in ] HGROUP_RPC hGroup,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x34 */
 
-       error_status_t
+       WERROR
        clusapi_MoveGroupToNode(
                [ in ] HGROUP_RPC hGroup,
                [ in ] HNODE_RPC hNode,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x35 */
 
-       error_status_t
+       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 ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x36 */
 
-       error_status_t
+       WERROR
        clusapi_SetGroupNodeList(
                [ in ] HGROUP_RPC hGroup,
                [ in, unique, size_is(cchListSize) ] uint16 *multiSzNodeList,
                [ in ] uint32 cchListSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
@@ -766,21 +821,21 @@ import "security.idl";
 #if 0
        HNOTIFY_RPC
        clusapi_CreateNotify(
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_CreateNotify(
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HNOTIFY_RPC *hNotify
        );
 #endif
        /*****************/
        /* Function 0x38 */
 
-       error_status_t
+       WERROR
        clusapi_CloseNotify(
                [ in, out ] HNOTIFY_RPC *Notify
        );
@@ -788,117 +843,117 @@ import "security.idl";
        /*****************/
        /* Function 0x39 */
 
-       error_status_t
+       WERROR
        clusapi_AddNotifyCluster(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HCLUSTER_RPC hCluster,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x3A */
 
-       error_status_t
+       WERROR
        clusapi_AddNotifyNode(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HNODE_RPC hNode,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ out ] uint32 *dwStateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x3B */
 
-       error_status_t
+       WERROR
        clusapi_AddNotifyGroup(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HGROUP_RPC hGroup,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ out ] uint32 *dwStateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x3C */
 
-       error_status_t
+       WERROR
        clusapi_AddNotifyResource(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HRES_RPC hResource,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ out ] uint32 *dwStateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x3D */
 
-       error_status_t
+       WERROR
        clusapi_AddNotifyKey(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HKEY_RPC hKey,
                [ in ] uint32 dwNotifyKey,
                [ in ] uint32 Filter,
                [ in ] boolean8 WatchSubTree,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x3E */
 
-       error_status_t
+       WERROR
        clusapi_ReAddNotifyNode(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HNODE_RPC hNode,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ in ] uint32 StateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x3F */
 
-       error_status_t
+       WERROR
        clusapi_ReAddNotifyGroup(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HGROUP_RPC hGroup,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ in ] uint32 StateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x40 */
 
-       error_status_t
+       WERROR
        clusapi_ReAddNotifyResource(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HRES_RPC hResource,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ in ] uint32 StateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x41 */
 
-       error_status_t
+       WERROR
        clusapi_GetNotify(
                [ in ] HNOTIFY_RPC hNotify,
                [ out ] uint32 *dwNotifyKey,
                [ out ] uint32 *dwFilter,
                [ out ] uint32 *dwStateSequence,
                [ out, string ] [charset(UTF16)] uint16 **Name,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
@@ -907,22 +962,22 @@ import "security.idl";
        HNODE_RPC
        clusapi_OpenNode(
                [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenNode(
                [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HNODE_RPC *hNode
        );
 #endif
        /*****************/
        /* Function 0x43 */
 
-       error_status_t
+       WERROR
        clusapi_CloseNode(
                [ in, out ] HNODE_RPC *Node
        );
@@ -930,44 +985,52 @@ import "security.idl";
        /*****************/
        /* Function 0x44 */
 
-       error_status_t
+       typedef [v1_enum] enum {
+               ClusterNodeUp           = 0x00000000,
+               ClusterNodeDown         = 0x00000001,
+               ClusterNodePaused       = 0x00000002,
+               ClusterNodeJoining      = 0x00000003,
+               ClusterNodeStateUnknown = 0xFFFFFFFF
+       } clusapi_ClusterNodeState;
+
+       WERROR
        clusapi_GetNodeState(
                [ in ] HNODE_RPC hNode,
-               [ out ] uint32 *State,
-               [ out ] error_status_t *rpc_status
+               [ out ] clusapi_ClusterNodeState *State,
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x45 */
 
-       error_status_t
+       WERROR
        clusapi_PauseNode(
                [ in ] HNODE_RPC hNode,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x46 */
 
-       error_status_t
+       WERROR
        clusapi_ResumeNode(
                [ in ] HNODE_RPC hNode,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x47 */
 
-       error_status_t
+       WERROR
        clusapi_EvictNode(
                [ in ] HNODE_RPC hNode,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x48 */
 
-       error_status_t
+       WERROR
        clusapi_NodeResourceControl(
                [ in ] HRES_RPC hResource,
                [ in ] HNODE_RPC hNode,
@@ -979,16 +1042,89 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x49 */
 
-       error_status_t
+       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),
@@ -996,13 +1132,13 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x4A */
 
-       error_status_t
+       WERROR
        clusapi_NodeResourceTypeControl(
                [ in ] HCLUSTER_RPC hCluster,
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
@@ -1015,17 +1151,59 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x4B */
 
-       error_status_t
+       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),
@@ -1033,13 +1211,13 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x4C */
 
-       error_status_t
+       WERROR
        clusapi_NodeGroupControl(
                [ in ] HGROUP_RPC hGroup,
                [ in ] HNODE_RPC hNode,
@@ -1051,16 +1229,35 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x4D */
 
-       error_status_t
+       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),
@@ -1068,13 +1265,13 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x4E */
 
-       error_status_t
+       WERROR
        clusapi_NodeNodeControl(
                [ in ] HNODE_RPC hNode,
                [ in ] HNODE_RPC hHostNode,
@@ -1086,16 +1283,35 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x4F */
 
-       error_status_t
+       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),
@@ -1103,13 +1319,13 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x50 */
 
-       error_status_t
+       WERROR
        Opnum80NotUsedOnWire(void);
 
        /*****************/
@@ -1118,22 +1334,22 @@ import "security.idl";
        HNETWORK_RPC
        clusapi_OpenNetwork(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenNetwork(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HNETWORK_RPC *hNetwork
        );
 #endif
        /*****************/
        /* Function 0x52 */
 
-       error_status_t
+       WERROR
        clusapi_CloseNetwork(
                [ in, out ] HNETWORK_RPC *Network
        );
@@ -1141,58 +1357,66 @@ import "security.idl";
        /*****************/
        /* Function 0x53 */
 
-       error_status_t
+       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 ] error_status_t *rpc_status
+               [ out ] clusapi_ClusterNetworkState *State,
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x54 */
 
-       error_status_t
+       WERROR
        clusapi_SetNetworkName(
                [ in ] HNETWORK_RPC hNetwork,
                [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x55 */
 
-       error_status_t
+       WERROR
        clusapi_CreateNetworkEnum(
                [ in ] HNETWORK_RPC hNetwork,
                [ in ] uint32 dwType,
                [ out ] ENUM_LIST **ReturnEnum,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x56 */
 
-       error_status_t
+       WERROR
        clusapi_GetNetworkId(
                [ in ] HNETWORK_RPC hNetwork,
                [ out, string ] [charset(UTF16)] uint16 **pGuid,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x57 */
 
-       error_status_t
+       WERROR
        clusapi_SetNetworkPriorityOrder(
                [ in, range(0, 1000)] uint32 NetworkCount,
                [ in, string, size_is(NetworkCount) ] [charset(UTF16)] uint16 NetworkIdList[*],
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x58 */
 
-       error_status_t
+       WERROR
        clusapi_NodeNetworkControl(
                [ in ] HNETWORK_RPC hNetwork,
                [ in ] HNODE_RPC hNode,
@@ -1204,13 +1428,13 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x59 */
 
-       error_status_t
+       WERROR
        clusapi_NetworkControl(
                [ in ] HNETWORK_RPC hNetwork,
                [ in ] uint32 dwControlCode,
@@ -1221,33 +1445,33 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x5A */
 
-       error_status_t
+       WERROR
        clusapi_AddNotifyNetwork(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HNETWORK_RPC hNetwork,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ out ] uint32 *dwStateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x5B */
 
-       error_status_t
+       WERROR
        clusapi_ReAddNotifyNetwork(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HNETWORK_RPC hNetwork,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ in ] uint32 StateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
@@ -1256,22 +1480,22 @@ import "security.idl";
        HNETINTERFACE_RPC
        clusapi_OpenNetInterface(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenNetInterface(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HNETINTERFACE_RPC *hNetInterface
        );
 #endif
        /*****************/
        /* Function 0x5D */
 
-       error_status_t
+       WERROR
        clusapi_CloseNetInterface(
                [ in, out ] HNETINTERFACE_RPC *NetInterface
        );
@@ -1279,38 +1503,46 @@ import "security.idl";
        /*****************/
        /* Function 0x5E */
 
-       error_status_t
+       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 ] error_status_t *rpc_status
+               [ out ] clusapi_ClusterNetInterfaceState *State,
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x5F */
 
-       error_status_t
+       WERROR
        clusapi_GetNetInterface(
                [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
                [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
                [ out, string ] [charset(UTF16)] uint16 **lppszInterfaceName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x60 */
 
-       error_status_t
+       WERROR
        clusapi_GetNetInterfaceId(
                [ in ] HNETINTERFACE_RPC hNetInterface,
                [ out, string ] [charset(UTF16)] uint16 **pGuid,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x61 */
 
-       error_status_t
+       WERROR
        clusapi_NodeNetInterfaceControl(
                [ in ] HNETINTERFACE_RPC hNetInterface,
                [ in ] HNODE_RPC hNode,
@@ -1322,13 +1554,13 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x62 */
 
-       error_status_t
+       WERROR
        clusapi_NetInterfaceControl(
                [ in ] HNETINTERFACE_RPC hNetInterface,
                [ in ] uint32 dwControlCode,
@@ -1339,50 +1571,50 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x63 */
 
-       error_status_t
+       WERROR
        clusapi_AddNotifyNetInterface(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HNETINTERFACE_RPC hNetInterface,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ out ] uint32 *dwStateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x64 */
 
-       error_status_t
+       WERROR
        clusapi_ReAddNotifyNetInterface(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HNETINTERFACE_RPC hNetInterface,
                [ in ] uint32 dwFilter,
                [ in ] uint32 dwNotifyKey,
                [ in ] uint32 StateSequence,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x65 */
 
-       error_status_t
+       WERROR
        clusapi_CreateNodeEnum(
                [ in ] HNODE_RPC hNode,
                [ in ] uint32 dwType,
                [ out ] ENUM_LIST **ReturnEnum,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x66 */
 
-       error_status_t
+       WERROR
        clusapi_GetClusterVersion2(
                [ out ] uint16 *lpwMajorVersion,
                [ out ] uint16 *lpwMinorVersion,
@@ -1390,33 +1622,38 @@ import "security.idl";
                [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
                [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion,
                [ out ] CLUSTER_OPERATIONAL_VERSION_INFO **ppClusterOpVerInfo,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x67 */
 
-       error_status_t
+       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 ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x68 */
 
-       error_status_t
+       WERROR
        clusapi_BackupClusterDatabase(
                [ in, string ] [charset(UTF16)] uint16 *lpszPathName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x69 */
 
-       error_status_t
+       WERROR
        clusapi_NodeClusterControl(
                [ in ] HCLUSTER_RPC hCluster,
                [ in ] HNODE_RPC hHostNode,
@@ -1428,16 +1665,87 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x6A */
 
-       error_status_t
+       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),
@@ -1445,13 +1753,13 @@ import "security.idl";
                [ in ] uint32 nOutBufferSize,
                [ out ] uint32 *lpBytesReturned,
                [ out ] uint32 *lpcbRequired,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x6B */
 
-       error_status_t
+       WERROR
        clusapi_UnblockGetNotifyCall(
                [ in ] HNOTIFY_RPC hNotify
        );
@@ -1459,7 +1767,7 @@ import "security.idl";
        /*****************/
        /* Function 0x6C */
 
-       error_status_t
+       WERROR
        clusapi_SetServiceAccountPassword(
                [ in, string ] [charset(UTF16)] uint16 *lpszNewPassword,
                [ in ]  IDL_CLUSTER_SET_PASSWORD_FLAGS dwFlags,
@@ -1473,65 +1781,65 @@ import "security.idl";
        /*****************/
        /* Function 0x6D */
 
-       error_status_t
+       WERROR
        clusapi_SetResourceDependencyExpression(
                [ in ] HRES_RPC hResource,
                [ in, string, unique ] [charset(UTF16)] uint16 *lpszDependencyExpression,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x6E */
 
-       error_status_t
+       WERROR
        clusapi_GetResourceDependencyExpression(
                [ in ] HRES_RPC hResource,
                [ out, string ] [charset(UTF16)] uint16 **lpszDependencyExpression,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x6F */
 
-       error_status_t
+       WERROR
        Opnum111NotUsedOnWire(void);
 
        /*****************/
        /* Function 0x70 */
 
-       error_status_t
+       WERROR
        clusapi_GetResourceNetworkName(
                [ in ] HRES_RPC hResource,
                [ out, string ] [charset(UTF16)] uint16 **lpszName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x71 */
 
-       error_status_t
+       WERROR
        clusapi_ExecuteBatch(
                [ in ] HKEY_RPC hKey,
                [ in ] uint32 cbData,
                [ in, size_is(cbData)] uint8 *lpData,
                [ out ] int *pdwFailedCommand,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x72 */
 
-       error_status_t
+       WERROR
        clusapi_CreateBatchPort(
                [ in ] HKEY_RPC hKey,
                [ out ] HBATCH_PORT_RPC *phBatchPort,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x73 */
 
-       error_status_t
+       WERROR
        clusapi_GetBatchNotification(
                 [ in ] HBATCH_PORT_RPC hBatchNotify,
                 [ out ] uint32 *cbData,
@@ -1541,26 +1849,37 @@ import "security.idl";
        /*****************/
        /* Function 0x74 */
 
-       error_status_t
+       WERROR
        clusapi_CloseBatchPort(
                 [ in, out ] HBATCH_PORT_RPC *phBatchPort
        );
 
        /*****************/
        /* 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 ] error_status_t *Status
+               [ out ] WERROR *Status
        );
 #else
        void
        clusapi_OpenClusterEx(
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
+               [ out ] WERROR *Status,
                [ out ] HCLUSTER_RPC *hCluster
        );
 #endif
@@ -1571,19 +1890,19 @@ import "security.idl";
        HNODE_RPC
        clusapi_OpenNodeEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenNodeEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HNODE_RPC *hNode
        );
 #endif
@@ -1593,19 +1912,19 @@ import "security.idl";
        HGROUP_RPC
        clusapi_OpenGroupEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenGroupEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HGROUP_RPC *hGroup
        );
 #endif
@@ -1615,19 +1934,19 @@ import "security.idl";
        HRES_RPC
        clusapi_OpenResourceEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenResourceEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HRES_RPC *hResource
        );
 #endif
@@ -1637,19 +1956,19 @@ import "security.idl";
        HNETWORK_RPC
        clusapi_OpenNetworkEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenNetworkEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HNETWORK_RPC *hNetwork
        );
 #endif
@@ -1659,89 +1978,89 @@ import "security.idl";
        HNETINTERFACE_RPC
        clusapi_OpenNetInterfaceEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_OpenNetInterfaceEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
-               [ in ] uint32 dwDesiredAccess,
+               [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
                [ out ] uint32 *lpdwGrantedAccess,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HNETINTERFACE_RPC *hNetInterface
        );
 #endif
        /*****************/
        /* Function 0x7B */
 
-       error_status_t
+       WERROR
        clusapi_ChangeCsvState(
                [ in ] HRES_RPC hResource,
                [ in ] uint32 dwState,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x7C */
 
-       error_status_t
+       WERROR
        clusapi_CreateNodeEnumEx(
                [in] HNODE_RPC hNode,
                [in] uint32 dwType,
                [in] uint32 dwOptions,
                [out] ENUM_LIST **ReturnIdEnum,
                [out] ENUM_LIST **ReturnNameEnum,
-               [out] error_status_t* rpc_status
+               [out] WERROR* rpc_status
        );
 
        /*****************/
        /* Function 0x7D */
 
-       error_status_t
+       WERROR
        clusapi_CreateEnumEx(
                [in] HCLUSTER_RPC hCluster,
-               [in] uint32 dwType,
+               [in] ClusterEnumType dwType,
                [in] uint32 dwOptions,
                [out] ENUM_LIST **ReturnIdEnum,
                [out] ENUM_LIST **ReturnNameEnum,
-               [out] error_status_t* rpc_status
+               [out] WERROR* rpc_status
        );
 
        /*****************/
        /* Function 0x7E */
 
-       error_status_t
+       WERROR
        clusapi_PauseNodeEx(
                [ in ] HNODE_RPC hNode,
                [ in ] boolean8 bDrainNode,
                [ in ] uint32 dwPauseFlags,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x7F */
 
-       error_status_t
+       WERROR
        clusapi_PauseNodeWithDrainTarget(
                [ in ] HNODE_RPC hNode,
                [ in ] uint32 dwPauseFlags,
                [ in ] HNODE_RPC hNodeDrainTarget,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x80 */
 
-       error_status_t
+       WERROR
        clusapi_ResumeNodeEx(
                [ in ] HNODE_RPC hNode,
                [ in ] uint32 dwResumeFailbackType,
                [ in ] uint32 dwResumeFlagsReserved,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
@@ -1751,100 +2070,100 @@ import "security.idl";
        clusapi_CreateGroupEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
                [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_CreateGroupEx(
                [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
                [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
-               [ out ] error_status_t *Status,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *Status,
+               [ out ] WERROR *rpc_status,
                [ out ] HGROUP_RPC *hGroup
        );
 #endif
        /*****************/
        /* Function 0x82 */
 
-       error_status_t
+       WERROR
        clusapi_OnlineGroupEx(
                [ in ] HGROUP_RPC hGroup,
                [ in ] uint32     dwOnlineFlags,
                [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
                [ in ] uint32     cbInBufferSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x83 */
 
-       error_status_t
+       WERROR
        clusapi_OfflineGroupEx(
                [ in ] HGROUP_RPC hGroup,
                [ in ] uint32     dwOfflineFlags,
                [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
                [ in ] uint32     cbInBufferSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x84 */
 
-       error_status_t
+       WERROR
        clusapi_MoveGroupEx(
                [ in ] HGROUP_RPC hGroup,
                [ in ] uint32           dwMoveFlags,
                [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
                [ in ] uint32           cbInBufferSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x85 */
 
-       error_status_t
+       WERROR
        clusapi_MoveGroupToNodeEx(
                [ in ] HGROUP_RPC hGroup,
                [ in ] HNODE_RPC  hNode,
                [ in ] uint32           dwMoveFlags,
                [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
                [ in ] uint32           cbInBufferSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x86 */
 
-       error_status_t
+       WERROR
        clusapi_CancelClusterGroupOperation(
                [ in ] HGROUP_RPC       hGroup,
                [ in ] uint32            dwCancelFlags,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x87 */
 
-       error_status_t
+       WERROR
        clusapi_OnlineResourceEx(
                [ in ] HRES_RPC hResource,
                [ in ] uint32     dwOnlineFlags,
                [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
                [ in ] uint32     cbInBufferSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x88 */
 
-       error_status_t
+       WERROR
        clusapi_OfflineResourceEx(
                [ in ] HRES_RPC hResource,
                [ in ] uint32     dwOfflineFlags,
                [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
                [ in ] uint32     cbInBufferSize,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
 #define HGENERIC_RPC policy_handle
@@ -1853,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;
 
@@ -1875,20 +2194,20 @@ import "security.idl";
        /*****************/
        /* Function 0x89 */
 
-       //
-       // Notify interface V2 functions
-       //
+       /*
+        * Notify interface V2 functions
+        */
 #if 0
        HNOTIFY_RPC
        clusapi_CreateNotifyV2(
-               [ out ] error_status_t *rpc_error,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_error,
+               [ out ] WERROR *rpc_status
        );
 #else
        void
        clusapi_CreateNotifyV2(
-               [ out ] error_status_t *rpc_error,
-               [ out ] error_status_t *rpc_status,
+               [ out ] WERROR *rpc_error,
+               [ out ] WERROR *rpc_status,
                [ out ] HNOTIFY_RPC *hNotify
        );
 
@@ -1896,7 +2215,7 @@ import "security.idl";
        /*****************/
        /* Function 0x8A */
 
-       error_status_t
+       WERROR
        clusapi_AddNotifyV2(
                [ in ] HNOTIFY_RPC hNotify,
                [ in ] HGENERIC_RPC hObject,
@@ -1904,13 +2223,13 @@ import "security.idl";
                [ in ] uint32 dwNotifyKey,
                [ in ] uint32 dwVersion,
                [ in ] boolean8 isTargetedAtObject,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x8B */
 
-       error_status_t
+       WERROR
        clusapi_GetNotifyV2(
                [ in ] HNOTIFY_RPC hNotify,
                [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_RPC **Notifications,
@@ -1920,12 +2239,12 @@ import "security.idl";
        /*****************/
        /* Function 0x8C */
 
-       error_status_t
+       WERROR
        clusapi_QueryAllValues(
                [ in ] HKEY_RPC hKey,
                [ out ] uint32 *pcbData,
                [ out, size_is(1, *pcbData) ] uint8 ** ppData,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        typedef struct {
@@ -1936,7 +2255,7 @@ import "security.idl";
        /*****************/
        /* Function 0x8D */
 
-       error_status_t
+       WERROR
        clusapi_StmFindDisk(
                [ in ] HCLUSTER_RPC hCluster,
                [ in ] uint32 dwFlags,
@@ -1944,7 +2263,7 @@ import "security.idl";
                [ in, size_is(uniqueIdSize), unique ] uint8 *pUniqueId,
                [ in ] uint32 uniqueIdSize,
                [ out, ref, string ] [charset(UTF16)] uint16 **ppszDeviceName,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        typedef struct{
@@ -1962,7 +2281,7 @@ import "security.idl";
        /*****************/
        /* Function 0x8E */
 
-       error_status_t
+       WERROR
        clusapi_ClusterMrr(
                [ in ] HCLUSTER_RPC hCluster,
                [ in ] boolean8 fExcludeSelf,
@@ -1973,13 +2292,13 @@ import "security.idl";
                [ in ] uint32 inSize,
                [ in, unique, size_is(inSize) ] uint8 *pInData,
                [ out, ref, size_is(1, 1) ] CLUSTER_MRR_RESPONSE **ppInfo,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x8F */
 
-       error_status_t
+       WERROR
        clusapi_CreateGroupEnum(
                [ in ] HCLUSTER_RPC hCluster,
                [ in, unique, size_is(cbProperties)] uint8* pProperties,
@@ -1987,13 +2306,13 @@ import "security.idl";
                [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
                [ in ] uint32 cbRoProperties,
                [ out ] GROUP_ENUM_LIST **ppResultList,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x90 */
 
-       error_status_t
+       WERROR
        clusapi_CreateResourceEnum(
                [ in ] HCLUSTER_RPC hCluster,
                [ in, unique, size_is(cbProperties)] uint8* pProperties,
@@ -2001,30 +2320,30 @@ import "security.idl";
                [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
                [ in ] uint32 cbRoProperties,
                [ out ] RESOURCE_ENUM_LIST **ppResultList,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x91 */
 
-       error_status_t
+       WERROR
        clusapi_ExecuteReadBatch(
                [ in ] HKEY_RPC hKey,
                [ in ] uint32 cbInData,
                [ in, size_is(cbInData)] uint8 *lpInData,
                [ out ] uint32 *cbOutData,
                [ out, size_is(,*cbOutData) ] uint8 ** lpOutData,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        /*****************/
        /* Function 0x92 */
 
-       error_status_t
+       WERROR
        clusapi_RestartResource(
                [ in ] HRES_RPC hResource,
                [ in ] uint32 dwFlags,
-               [ out ] error_status_t *rpc_status
+               [ out ] WERROR *rpc_status
        );
 
        typedef struct {
@@ -2036,7 +2355,7 @@ import "security.idl";
        /*****************/
        /* Function 0x93 */
 
-       error_status_t
+       WERROR
        clusapi_GetNotifyAsync(
                [ in ] HNOTIFY_RPC hNotify,
                [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_DATA_ASYNC_RPC **Notifications,
@@ -2089,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,
@@ -2306,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
+       );
 }