librpc: add clusapi idl version 3.0.
authorGünther Deschner <gd@samba.org>
Wed, 25 Feb 2015 09:10:38 +0000 (10:10 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 13 Mar 2015 10:35:26 +0000 (11:35 +0100)
Guenther

Signed-off-by: Günther Deschner <gd@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
librpc/idl/clusapi.idl [new file with mode: 0644]

diff --git a/librpc/idl/clusapi.idl b/librpc/idl/clusapi.idl
new file mode 100644 (file)
index 0000000..4b0ad0b
--- /dev/null
@@ -0,0 +1,1877 @@
+import "security.idl";
+
+#include "idl_types.h"
+
+[
+       uuid(b97db8b2-4c63-11cf-bff6-08002be23f2f),
+       version(3.0),
+       pointer_default(unique),
+       helpstring("Failover Cluster Management API (clusapi)")
+]
+       interface clusapi
+{
+#if 0
+       typedef [context_handle] void *HCLUSTER_RPC;
+       typedef [context_handle] void *HNODE_RPC;
+       typedef [context_handle] void *HGROUP_RPC;
+       typedef [context_handle] void *HRES_RPC;
+       typedef [context_handle] void *HKEY_RPC;
+       typedef [context_handle] void *HNOTIFY_RPC;
+       typedef [context_handle] void *HNETWORK_RPC;
+       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
+#endif
+
+       typedef struct {
+               [ size_is( cbInSecurityDescriptor ), length_is( cbOutSecurityDescriptor ) ] uint8 *lpSecurityDescriptor;
+               uint32 cbInSecurityDescriptor;
+               uint32 cbOutSecurityDescriptor;
+       } RPC_SECURITY_DESCRIPTOR;
+
+       typedef struct {
+               uint32 nLength;
+               RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor;
+               long bInheritHandle;
+       } RPC_SECURITY_ATTRIBUTES;
+
+       typedef struct {
+               [value(20)] uint32 dwSize;
+               uint32 dwClusterHighestVersion;
+               uint32 dwClusterLowestVersion;
+               uint32 dwFlags;
+               uint32 dwReserved;
+       } CLUSTER_OPERATIONAL_VERSION_INFO;
+
+       typedef struct {
+               uint32   NodeId;
+               boolean8  SetAttempted;
+               uint32   ReturnStatus;
+       } IDL_CLUSTER_SET_PASSWORD_STATUS;
+
+       typedef enum {
+               IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
+       } IDL_CLUSTER_SET_PASSWORD_FLAGS;
+
+       typedef struct {
+               uint32  dwVersion;
+               uint32  dwGroupType;
+       } CLUSTER_CREATE_GROUP_INFO_RPC;
+
+       /*****************/
+       /* Function 0x00 */
+
+       HCLUSTER_RPC
+       clusapi_OpenCluster(
+               [ out ] error_status_t *Status
+       );
+
+       /*****************/
+       /* Function 0x01 */
+
+       error_status_t
+       clusapi_CloseCluster(
+               [ in, out ] HCLUSTER_RPC *Cluster
+       );
+
+       /*****************/
+       /* Function 0x02 */
+
+       error_status_t
+       clusapi_SetClusterName(
+               [ in, string ] [charset(UTF16)] uint16 *NewClusterName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x03 */
+
+       error_status_t
+       clusapi_GetClusterName(
+               [ out, string ] [charset(UTF16)] uint16 **ClusterName,
+               [ out, string ] [charset(UTF16)] uint16 **NodeName
+       );
+
+       /*****************/
+       /* Function 0x04 */
+
+       error_status_t
+       clusapi_GetClusterVersion(
+               [ out ] uint16 *lpwMajorVersion,
+               [ out ] uint16 *lpwMinorVersion,
+               [ out ] uint16 *lpwBuildNumber,
+               [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
+               [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion
+       );
+
+       /*****************/
+       /* Function 0x05 */
+
+       error_status_t
+       clusapi_GetQuorumResource(
+               [ out, string ] [charset(UTF16)] uint16 **lpszResourceName,
+               [ out, string ] [charset(UTF16)] uint16 **lpszDeviceName,
+               [ out ] uint32 *pdwMaxQuorumLogSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x06 */
+
+       error_status_t
+       clusapi_SetQuorumResource(
+               [ in ] HRES_RPC hResource,
+               [ in, string ] [charset(UTF16)] uint16 *lpszDeviceName,
+               [ in ] uint32    dwMaxQuorumLogSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+       typedef struct {
+               uint32 Type;
+               [string] [charset(UTF16)] uint16 *Name;
+       } ENUM_ENTRY;
+
+       typedef struct {
+               uint32 EntryCount;
+               [size_is(EntryCount)] ENUM_ENTRY Entry[*];
+       } ENUM_LIST;
+
+       typedef struct {
+               [string] [charset(UTF16)] uint16 *Name;
+               [string] [charset(UTF16)] uint16 *Id;
+               uint32 dwState;
+               [string] [charset(UTF16)] uint16 *Owner;
+               uint32 dwFlags;
+               uint32 cbProperties;
+               [size_is(cbProperties)] uint8* Properties;
+               uint32 cbRoProperties;
+               [size_is(cbRoProperties)] uint8* RoProperties;
+       } GROUP_ENUM_ENTRY;
+
+       typedef struct {
+               [string] [charset(UTF16)] uint16 *Name;
+               [string] [charset(UTF16)] uint16 *Id;
+               [string] [charset(UTF16)] uint16 *OwnerName;
+               [string] [charset(UTF16)] uint16 *OwnerId;
+               uint32 cbProperties;
+               [size_is(cbProperties)] uint8* Properties;
+               uint32 cbRoProperties;
+               [size_is(cbRoProperties)] uint8* RoProperties;
+       } RESOURCE_ENUM_ENTRY;
+
+       typedef struct {
+               uint32 EntryCount;
+               [size_is(EntryCount)] GROUP_ENUM_ENTRY Entry[*];
+       } GROUP_ENUM_LIST;
+
+       typedef struct {
+               uint32 EntryCount;
+               [size_is(EntryCount)] RESOURCE_ENUM_ENTRY Entry[*];
+       } RESOURCE_ENUM_LIST;
+
+       /*****************/
+       /* Function 0x07 */
+
+       error_status_t
+       clusapi_CreateEnum(
+               [ in ] uint32 dwType,
+               [ out ] ENUM_LIST **ReturnEnum,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x08 */
+
+       HRES_RPC
+       clusapi_OpenResource(
+               [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x09 */
+
+       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
+       );
+
+       /*****************/
+       /* Function 0x0A */
+
+       error_status_t
+       clusapi_DeleteResource(
+               [ in ] HRES_RPC hResource,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x0B */
+
+       error_status_t
+       clusapi_CloseResource(
+               [ in, out ] HRES_RPC *Resource
+       );
+
+       /*****************/
+       /* Function 0x0C */
+
+       error_status_t
+       clusapi_GetResourceState(
+               [ in ] HRES_RPC hResource,
+               [ out ] uint32 *State,
+               [ out, string ] [charset(UTF16)] uint16 **NodeName,
+               [ out, string ] [charset(UTF16)] uint16 **GroupName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x0D */
+
+       error_status_t
+       clusapi_SetResourceName(
+               [ in ] HRES_RPC hResource,
+               [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x0E */
+
+       error_status_t
+       clusapi_GetResourceId(
+               [ in ] HRES_RPC hResource,
+               [ out, string ] [charset(UTF16)] uint16 **pGuid,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x0F */
+
+       error_status_t
+       clusapi_GetResourceType(
+               [ in ] HRES_RPC hResource,
+               [ out, string ] [charset(UTF16)] uint16 **lpszResourceType,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x10 */
+
+       error_status_t
+       clusapi_FailResource(
+               [ in ] HRES_RPC hResource,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x11 */
+
+       error_status_t
+       clusapi_OnlineResource(
+               [ in ] HRES_RPC hResource,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x12 */
+
+       error_status_t
+       clusapi_OfflineResource(
+               [ in ] HRES_RPC hResource,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x13 */
+
+       error_status_t
+       clusapi_AddResourceDependency(
+               [ in ] HRES_RPC hResource,
+               [ in ] HRES_RPC hDependsOn,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x14 */
+
+       error_status_t
+       clusapi_RemoveResourceDependency(
+               [ in ] HRES_RPC hResource,
+               [ in ] HRES_RPC hDependsOn,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x15 */
+
+       error_status_t
+       clusapi_CanResourceBeDependent(
+               [ in ] HRES_RPC hResource,
+               [ in ] HRES_RPC hResourceDependent,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x16 */
+
+       error_status_t
+       clusapi_CreateResEnum(
+               [ in ] HRES_RPC hResource,
+               [ in ] uint32 dwType,
+               [ out ] ENUM_LIST **ReturnEnum,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x17 */
+
+       error_status_t
+       clusapi_AddResourceNode(
+               [ in ] HRES_RPC hResource,
+               [ in ] HNODE_RPC hNode,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x18 */
+
+       error_status_t
+       clusapi_RemoveResourceNode(
+               [ in ] HRES_RPC hResource,
+               [ in ] HNODE_RPC hNode,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x19 */
+
+       error_status_t
+       clusapi_ChangeResourceGroup(
+               [ in ] HRES_RPC hResource,
+               [ in ] HGROUP_RPC hGroup,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x1A */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x1B */
+
+       error_status_t
+       clusapi_DeleteResourceType(
+               [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x1C */
+
+       HKEY_RPC
+       clusapi_GetRootKey(
+               [ in ] uint32 samDesired,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x1D */
+
+       HKEY_RPC
+       clusapi_CreateKey(
+               [ in ] HKEY_RPC hKey,
+               [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
+               [ in ] uint32 dwOptions,
+               [ in ] uint32 samDesired,
+               [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
+               [ out ] uint32 *lpdwDisposition,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x1E */
+
+       HKEY_RPC
+       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
+       );
+
+       /*****************/
+       /* Function 0x1F */
+
+       error_status_t
+       clusapi_EnumKey(
+               [ in ] HKEY_RPC hKey,
+               [ in ] uint32 dwIndex,
+               [ out, string ] [charset(UTF16)] uint16 **KeyName,
+               [ out ] NTTIME *lpftLastWriteTime,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x20 */
+
+       error_status_t
+       clusapi_SetValue(
+               [ in ] HKEY_RPC hKey,
+               [ in, string ] [charset(UTF16)] uint16 *lpValueName,
+               [ in ] uint32 dwType,
+               [ in, size_is(cbData) ] uint8 *lpData,
+               [ in ] uint32 cbData,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x21 */
+
+       error_status_t
+       clusapi_DeleteValue(
+               [ in ] HKEY_RPC hKey,
+               [ in, string ] [charset(UTF16)] uint16 *lpValueName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x22 */
+
+       error_status_t
+       clusapi_QueryValue(
+               [ in ] HKEY_RPC hKey,
+               [ in, string ] [charset(UTF16)] uint16 *lpValueName,
+               [ out ] uint32 *lpValueType,
+               [ out, size_is(cbData) ] uint8 *lpData,
+               [ in ] uint32 cbData,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x23 */
+
+       error_status_t
+       clusapi_DeleteKey(
+               [ in ] HKEY_RPC hKey,
+               [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x24 */
+
+       error_status_t
+       clusapi_EnumValue(
+               [ in ] HKEY_RPC hKey,
+               [ in ] uint32 dwIndex,
+               [ out, string ] [charset(UTF16)] uint16 **lpValueName,
+               [ out ] uint32 *lpType,
+               [ out, size_is(*lpcbData) ] uint8 *lpData,
+               [ in, out ] uint32 *lpcbData,
+               [ out ] uint32 *TotalSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x25 */
+
+       error_status_t
+       clusapi_CloseKey(
+               [ in, out ] HKEY_RPC *pKey
+       );
+
+       /*****************/
+       /* Function 0x26 */
+
+       error_status_t
+       clusapi_QueryInfoKey(
+               [ in ] HKEY_RPC hKey,
+               [ out ] uint32 *lpcSubKeys,
+               [ out ] uint32 *lpcbMaxSubKeyLen,
+               [ out ] uint32 *lpcValues,
+               [ out ] uint32 *lpcbMaxValueNameLen,
+               [ out ] uint32 *lpcbMaxValueLen,
+               [ out ] uint32 *lpcbSecurityDescriptor,
+               [ out ] NTTIME *lpftLastWriteTime,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x27 */
+
+       error_status_t
+       clusapi_SetKeySecurity(
+               [ in ] HKEY_RPC hKey,
+               [ in ] uint32 SecurityInformation,
+               [ in ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x28 */
+
+       error_status_t
+       clusapi_GetKeySecurity(
+               [ in ] HKEY_RPC hKey,
+               [ in ] uint32 SecurityInformation,
+               [ in, out ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x29 */
+
+       HGROUP_RPC
+       clusapi_OpenGroup(
+               [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x2A */
+
+       HGROUP_RPC
+       clusapi_CreateGroup(
+               [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x2B */
+
+       error_status_t
+       clusapi_DeleteGroup(
+               [ in ] HGROUP_RPC Group,
+               [ in ] boolean8 force,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x2C */
+
+       error_status_t
+       clusapi_CloseGroup(
+               [ in, out ] HGROUP_RPC *Group
+       );
+
+       /*****************/
+       /* Function 0x2D */
+
+       error_status_t
+       clusapi_GetGroupState(
+               [ in ] HGROUP_RPC hGroup,
+               [ out ] uint32 *State,
+               [ out, string ] [charset(UTF16)] uint16 **NodeName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x2E */
+
+       error_status_t
+       clusapi_SetGroupName(
+               [ in ] HGROUP_RPC hGroup,
+               [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x2F */
+
+       error_status_t
+       clusapi_GetGroupId(
+               [ in ] HGROUP_RPC hGroup,
+               [ out, string ] [charset(UTF16)] uint16 **pGuid,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x30 */
+
+       error_status_t
+       clusapi_GetNodeId(
+               [ in ] HNODE_RPC hNode,
+               [ out, string ] [charset(UTF16)] uint16 **pGuid,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x31 */
+
+       error_status_t
+       clusapi_OnlineGroup(
+               [ in ] HGROUP_RPC hGroup,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x32 */
+
+       error_status_t
+       clusapi_OfflineGroup(
+               [ in ] HGROUP_RPC hGroup,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x33 */
+
+       error_status_t
+       clusapi_MoveGroup(
+               [ in ] HGROUP_RPC hGroup,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x34 */
+
+       error_status_t
+       clusapi_MoveGroupToNode(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] HNODE_RPC hNode,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x35 */
+
+       error_status_t
+       clusapi_CreateGroupResourceEnum(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] uint32 dwType,
+               [ out ] ENUM_LIST **ReturnEnum,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x36 */
+
+       error_status_t
+       clusapi_SetGroupNodeList(
+               [ in ] HGROUP_RPC hGroup,
+               [ in, unique, size_is(cchListSize) ] uint16 *multiSzNodeList,
+               [ in ] uint32 cchListSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x37 */
+
+       HNOTIFY_RPC
+       clusapi_CreateNotify(
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x38 */
+
+       error_status_t
+       clusapi_CloseNotify(
+               [ in, out ] HNOTIFY_RPC *Notify
+       );
+
+       /*****************/
+       /* Function 0x39 */
+
+       error_status_t
+       clusapi_AddNotifyCluster(
+               [ in ] HNOTIFY_RPC hNotify,
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in ] uint32 dwFilter,
+               [ in ] uint32 dwNotifyKey,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x3A */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x3B */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x3C */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x3D */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x3E */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x3F */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x40 */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x41 */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x42 */
+
+       HNODE_RPC
+       clusapi_OpenNode(
+               [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x43 */
+
+       error_status_t
+       clusapi_CloseNode(
+               [ in, out ] HNODE_RPC *Node
+       );
+
+       /*****************/
+       /* Function 0x44 */
+
+       error_status_t
+       clusapi_GetNodeState(
+               [ in ] HNODE_RPC hNode,
+               [ out ] uint32 *State,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x45 */
+
+       error_status_t
+       clusapi_PauseNode(
+               [ in ] HNODE_RPC hNode,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x46 */
+
+       error_status_t
+       clusapi_ResumeNode(
+               [ in ] HNODE_RPC hNode,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x47 */
+
+       error_status_t
+       clusapi_EvictNode(
+               [ in ] HNODE_RPC hNode,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x48 */
+
+       error_status_t
+       clusapi_NodeResourceControl(
+               [ in ] HRES_RPC hResource,
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x49 */
+
+       error_status_t
+       clusapi_ResourceControl(
+               [ in ] HRES_RPC hResource,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x4A */
+
+       error_status_t
+       clusapi_NodeResourceTypeControl(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x4B */
+
+       error_status_t
+       clusapi_ResourceTypeControl(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x4C */
+
+       error_status_t
+       clusapi_NodeGroupControl(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x4D */
+
+       error_status_t
+       clusapi_GroupControl(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x4E */
+
+       error_status_t
+       clusapi_NodeNodeControl(
+               [ in ] HNODE_RPC hNode,
+               [ in ] HNODE_RPC hHostNode,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x4F */
+
+       error_status_t
+       clusapi_NodeControl(
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x50 */
+
+       error_status_t
+       Opnum80NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x51 */
+
+       HNETWORK_RPC
+       clusapi_OpenNetwork(
+               [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x52 */
+
+       error_status_t
+       clusapi_CloseNetwork(
+               [ in, out ] HNETWORK_RPC *Network
+       );
+
+       /*****************/
+       /* Function 0x53 */
+
+       error_status_t
+       clusapi_GetNetworkState(
+               [ in ] HNETWORK_RPC hNetwork,
+               [ out ] uint32 *State,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x54 */
+
+       error_status_t
+       clusapi_SetNetworkName(
+               [ in ] HNETWORK_RPC hNetwork,
+               [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x55 */
+
+       error_status_t
+       clusapi_CreateNetworkEnum(
+               [ in ] HNETWORK_RPC hNetwork,
+               [ in ] uint32 dwType,
+               [ out ] ENUM_LIST **ReturnEnum,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x56 */
+
+       error_status_t
+       clusapi_GetNetworkId(
+               [ in ] HNETWORK_RPC hNetwork,
+               [ out, string ] [charset(UTF16)] uint16 **pGuid,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x57 */
+
+       error_status_t
+       clusapi_SetNetworkPriorityOrder(
+               [ in, range(0, 1000)] uint32 NetworkCount,
+               [ in, string, size_is(NetworkCount) ] [charset(UTF16)] uint16 NetworkIdList[*],
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x58 */
+
+       error_status_t
+       clusapi_NodeNetworkControl(
+               [ in ] HNETWORK_RPC hNetwork,
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x59 */
+
+       error_status_t
+       clusapi_NetworkControl(
+               [ in ] HNETWORK_RPC hNetwork,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x5A */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x5B */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x5C */
+
+       HNETINTERFACE_RPC
+       clusapi_OpenNetInterface(
+               [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x5D */
+
+       error_status_t
+       clusapi_CloseNetInterface(
+               [ in, out ] HNETINTERFACE_RPC *NetInterface
+       );
+
+       /*****************/
+       /* Function 0x5E */
+
+       error_status_t
+       clusapi_GetNetInterfaceState(
+               [ in ] HNETINTERFACE_RPC hNetInterface,
+               [ out ] uint32 *State,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x5F */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x60 */
+
+       error_status_t
+       clusapi_GetNetInterfaceId(
+               [ in ] HNETINTERFACE_RPC hNetInterface,
+               [ out, string ] [charset(UTF16)] uint16 **pGuid,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x61 */
+
+       error_status_t
+       clusapi_NodeNetInterfaceControl(
+               [ in ] HNETINTERFACE_RPC hNetInterface,
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x62 */
+
+       error_status_t
+       clusapi_NetInterfaceControl(
+               [ in ] HNETINTERFACE_RPC hNetInterface,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x63 */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x64 */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x65 */
+
+       error_status_t
+       clusapi_CreateNodeEnum(
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwType,
+               [ out ] ENUM_LIST **ReturnEnum,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x66 */
+
+       error_status_t
+       clusapi_GetClusterVersion2(
+               [ out ] uint16 *lpwMajorVersion,
+               [ out ] uint16 *lpwMinorVersion,
+               [ out ] uint16 *lpwBuildNumber,
+               [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
+               [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion,
+               [ out ] CLUSTER_OPERATIONAL_VERSION_INFO **ppClusterOpVerInfo,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x67 */
+
+       error_status_t
+       clusapi_CreateResTypeEnum(
+               [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
+               [ in ] uint32 dwType,
+               [ out ] ENUM_LIST **ReturnEnum,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x68 */
+
+       error_status_t
+       clusapi_BackupClusterDatabase(
+               [ in, string ] [charset(UTF16)] uint16 *lpszPathName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x69 */
+
+       error_status_t
+       clusapi_NodeClusterControl(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in ] HNODE_RPC hHostNode,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x6A */
+
+       error_status_t
+       clusapi_ClusterControl(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in ] uint32 dwControlCode,
+               [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+               [ in ] uint32 nInBufferSize,
+               [ out, size_is(nOutBufferSize),
+                        length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+               [ in ] uint32 nOutBufferSize,
+               [ out ] uint32 *lpBytesReturned,
+               [ out ] uint32 *lpcbRequired,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x6B */
+
+       error_status_t
+       clusapi_UnblockGetNotifyCall(
+               [ in ] HNOTIFY_RPC hNotify
+       );
+
+       /*****************/
+       /* Function 0x6C */
+
+       error_status_t
+       clusapi_SetServiceAccountPassword(
+               [ in, string ] [charset(UTF16)] uint16 *lpszNewPassword,
+               [ in ]  IDL_CLUSTER_SET_PASSWORD_FLAGS dwFlags,
+               [ out, size_is(ReturnStatusBufferSize), length_is(*SizeReturned) ]
+                        IDL_CLUSTER_SET_PASSWORD_STATUS ReturnStatusBufferPtr[*],
+               [ in, range(0, (64 * 1024)) ] uint32 ReturnStatusBufferSize,
+               [ out ] uint32 *SizeReturned,
+               [ out ] uint32 *ExpectedBufferSize
+       );
+
+       /*****************/
+       /* Function 0x6D */
+
+       error_status_t
+       clusapi_SetResourceDependencyExpression(
+               [ in ] HRES_RPC hResource,
+               [ in, string, unique ] [charset(UTF16)] uint16 *lpszDependencyExpression,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x6E */
+
+       error_status_t
+       clusapi_GetResourceDependencyExpression(
+               [ in ] HRES_RPC hResource,
+               [ out, string ] [charset(UTF16)] uint16 **lpszDependencyExpression,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x6F */
+
+       error_status_t
+       Opnum111NotUsedOnWire(void);
+
+       /*****************/
+       /* Function 0x70 */
+
+       error_status_t
+       clusapi_GetResourceNetworkName(
+               [ in ] HRES_RPC hResource,
+               [ out, string ] [charset(UTF16)] uint16 **lpszName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x71 */
+
+       error_status_t
+       clusapi_ExecuteBatch(
+               [ in ] HKEY_RPC hKey,
+               [ in ] uint32 cbData,
+               [ in, size_is(cbData)] uint8 *lpData,
+               [ out ] int *pdwFailedCommand,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x72 */
+
+       error_status_t
+       clusapi_CreateBatchPort(
+               [ in ] HKEY_RPC hKey,
+               [ out ] HBATCH_PORT_RPC *phBatchPort,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x73 */
+
+       error_status_t
+       clusapi_GetBatchNotification(
+                [ in ] HBATCH_PORT_RPC hBatchNotify,
+                [ out ] uint32 *cbData,
+                [ out, size_is(,*cbData) ] uint8 ** lpData
+       );
+
+       /*****************/
+       /* Function 0x74 */
+
+       error_status_t
+       clusapi_CloseBatchPort(
+                [ in, out ] HBATCH_PORT_RPC *phBatchPort
+       );
+
+       /*****************/
+       /* Function 0x75 */
+
+       HCLUSTER_RPC
+       clusapi_OpenClusterEx(
+               [ in ] uint32 dwDesiredAccess,
+               [ out ] uint32 *lpdwGrantedAccess,
+               [ out ] error_status_t *Status
+       );
+
+       /*****************/
+       /* Function 0x76 */
+
+       HNODE_RPC
+       clusapi_OpenNodeEx(
+               [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
+               [ in ] uint32 dwDesiredAccess,
+               [ out ] uint32 *lpdwGrantedAccess,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x77 */
+
+       HGROUP_RPC
+       clusapi_OpenGroupEx(
+               [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+               [ in ] uint32 dwDesiredAccess,
+               [ out ] uint32 *lpdwGrantedAccess,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x78 */
+
+       HRES_RPC
+       clusapi_OpenResourceEx(
+               [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+               [ in ] uint32 dwDesiredAccess,
+               [ out ] uint32 *lpdwGrantedAccess,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x79 */
+
+       HNETWORK_RPC
+       clusapi_OpenNetworkEx(
+               [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+               [ in ] uint32 dwDesiredAccess,
+               [ out ] uint32 *lpdwGrantedAccess,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x7A */
+
+       HNETINTERFACE_RPC
+       clusapi_OpenNetInterfaceEx(
+               [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
+               [ in ] uint32 dwDesiredAccess,
+               [ out ] uint32 *lpdwGrantedAccess,
+               [ out ] error_status_t *Status,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x7B */
+
+       error_status_t
+       clusapi_ChangeCsvState(
+               [ in ] HRES_RPC hResource,
+               [ in ] uint32 dwState,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x7C */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x7D */
+
+       error_status_t
+       clusapi_CreateEnumEx(
+               [in] HCLUSTER_RPC hCluster,
+               [in] uint32 dwType,
+               [in] uint32 dwOptions,
+               [out] ENUM_LIST **ReturnIdEnum,
+               [out] ENUM_LIST **ReturnNameEnum,
+               [out] error_status_t* rpc_status
+       );
+
+       /*****************/
+       /* Function 0x7E */
+
+       error_status_t
+       clusapi_PauseNodeEx(
+               [ in ] HNODE_RPC hNode,
+               [ in ] boolean8 bDrainNode,
+               [ in ] uint32 dwPauseFlags,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x7F */
+
+       error_status_t
+       clusapi_PauseNodeWithDrainTarget(
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwPauseFlags,
+               [ in ] HNODE_RPC hNodeDrainTarget,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x80 */
+
+       error_status_t
+       clusapi_ResumeNodeEx(
+               [ in ] HNODE_RPC hNode,
+               [ in ] uint32 dwResumeFailbackType,
+               [ in ] uint32 dwResumeFlagsReserved,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x81 */
+
+       HGROUP_RPC
+       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
+       );
+
+       /*****************/
+       /* Function 0x82 */
+
+       error_status_t
+       clusapi_OnlineGroupEx(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] uint32     dwOnlineFlags,
+               [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+               [ in ] uint32     cbInBufferSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x83 */
+
+       error_status_t
+       clusapi_OfflineGroupEx(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] uint32     dwOfflineFlags,
+               [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+               [ in ] uint32     cbInBufferSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x84 */
+
+       error_status_t
+       clusapi_MoveGroupEx(
+               [ in ] HGROUP_RPC hGroup,
+               [ in ] uint32           dwMoveFlags,
+               [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+               [ in ] uint32           cbInBufferSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x85 */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x86 */
+
+       error_status_t
+       clusapi_CancelClusterGroupOperation(
+               [ in ] HGROUP_RPC       hGroup,
+               [ in ] uint32            dwCancelFlags,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x87 */
+
+       error_status_t
+       clusapi_OnlineResourceEx(
+               [ in ] HRES_RPC hResource,
+               [ in ] uint32     dwOnlineFlags,
+               [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+               [ in ] uint32     cbInBufferSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x88 */
+
+       error_status_t
+       clusapi_OfflineResourceEx(
+               [ in ] HRES_RPC hResource,
+               [ in ] uint32     dwOfflineFlags,
+               [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+               [ in ] uint32     cbInBufferSize,
+               [ out ] error_status_t *rpc_status
+       );
+
+#define HGENERIC_RPC policy_handle
+#if 0
+       typedef [context_handle] void *HGENERIC_RPC;
+#endif
+
+       typedef struct {
+               uint32 dwObjectType;      // really of type CLUSTER_OBJECT_TYPE_RPC
+               hyper FilterFlags;
+       } NOTIFY_FILTER_AND_TYPE_RPC;
+
+       typedef struct {
+               NOTIFY_FILTER_AND_TYPE_RPC FilterAndType;
+               [ size_is(dwBufferSize ) ] uint8* buffer;
+               uint32 dwBufferSize;
+               [string] [charset(UTF16)] uint16 *ObjectId;
+               [string] [charset(UTF16)] uint16 *ParentId;
+               [string] [charset(UTF16)] uint16 *Name;
+               [string] [charset(UTF16)] uint16 *Type;
+       } NOTIFICATION_DATA_RPC;
+
+       typedef struct {
+               uint32 *dwNotifyKey;
+               NOTIFICATION_DATA_RPC NotificationData;
+       } NOTIFICATION_RPC;
+
+       /*****************/
+       /* Function 0x89 */
+
+       //
+       // Notify interface V2 functions
+       //
+       HNOTIFY_RPC
+       clusapi_CreateNotifyV2(
+               [ out ] error_status_t *rpc_error,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x8A */
+
+       error_status_t
+       clusapi_AddNotifyV2(
+               [ in ] HNOTIFY_RPC hNotify,
+               [ in ] HGENERIC_RPC hObject,
+               [ in ] NOTIFY_FILTER_AND_TYPE_RPC filter,
+               [ in ] uint32 dwNotifyKey,
+               [ in ] uint32 dwVersion,
+               [ in ] boolean8 isTargetedAtObject,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x8B */
+
+       error_status_t
+       clusapi_GetNotifyV2(
+               [ in ] HNOTIFY_RPC hNotify,
+               [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_RPC **Notifications,
+               [ out ] uint32 *dwNumNotifications
+       );
+
+       /*****************/
+       /* Function 0x8C */
+
+       error_status_t
+       clusapi_QueryAllValues(
+               [ in ] HKEY_RPC hKey,
+               [ out ] uint32 *pcbData,
+               [ out, size_is(1, *pcbData) ] uint8 ** ppData,
+               [ out ] error_status_t *rpc_status
+       );
+
+       typedef struct {
+               uint32 DiskIdType;
+               uint8  DiskIdBlob[16];
+       } CLUSTER_DISKID;
+
+       /*****************/
+       /* Function 0x8D */
+
+       error_status_t
+       clusapi_StmFindDisk(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in ] uint32 dwFlags,
+               [ in, out, unique ] CLUSTER_DISKID *pDiskId,
+               [ in, size_is(uniqueIdSize), unique ] uint8 *pUniqueId,
+               [ in ] uint32 uniqueIdSize,
+               [ out, ref, string ] [charset(UTF16)] uint16 **ppszDeviceName,
+               [ out ] error_status_t *rpc_status
+       );
+
+       typedef struct{
+               [string] [charset(UTF16)] uint16 *pszNodeName;
+               HRESULT ResultCode;
+               uint32  ResultSize;
+               [unique, size_is(ResultSize)]   uint8    *pResultData;
+       } CLUSTER_MRR_NODE_RESPONSE;
+
+       typedef struct {
+               uint32 NodeCount;
+               [size_is(NodeCount)] CLUSTER_MRR_NODE_RESPONSE *pNodes;
+       } CLUSTER_MRR_RESPONSE;
+
+       /*****************/
+       /* Function 0x8E */
+
+       error_status_t
+       clusapi_ClusterMrr(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in ] boolean8 fExcludeSelf,
+               [ in ] hyper nodeSet,
+               [ in ] uint32 dwTimeout,
+               [ in ] uint32 dwComponent,
+               [ in ] uint32 dwControlCode,
+               [ 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
+       );
+
+       /*****************/
+       /* Function 0x8F */
+
+       error_status_t
+       clusapi_CreateGroupEnum(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in, unique, size_is(cbProperties)] uint8* pProperties,
+               [ in ] uint32 cbProperties,
+               [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
+               [ in ] uint32 cbRoProperties,
+               [ out ] GROUP_ENUM_LIST **ppResultList,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x90 */
+
+       error_status_t
+       clusapi_CreateResourceEnum(
+               [ in ] HCLUSTER_RPC hCluster,
+               [ in, unique, size_is(cbProperties)] uint8* pProperties,
+               [ in ] uint32 cbProperties,
+               [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
+               [ in ] uint32 cbRoProperties,
+               [ out ] RESOURCE_ENUM_LIST **ppResultList,
+               [ out ] error_status_t *rpc_status
+       );
+
+       /*****************/
+       /* Function 0x91 */
+
+       error_status_t
+       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
+       );
+
+       /*****************/
+       /* Function 0x92 */
+
+       error_status_t
+       clusapi_RestartResource(
+               [ in ] HRES_RPC hResource,
+               [ in ] uint32 dwFlags,
+               [ out ] error_status_t *rpc_status
+       );
+
+       typedef struct {
+               uint32 dwNotifyKey;
+               uint32 dwFilter;
+               [string] [charset(UTF16)] uint16 *Name;
+       } NOTIFICATION_DATA_ASYNC_RPC;
+
+       /*****************/
+       /* Function 0x93 */
+
+       error_status_t
+       clusapi_GetNotifyAsync(
+               [ in ] HNOTIFY_RPC hNotify,
+               [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_DATA_ASYNC_RPC **Notifications,
+               [ out ] uint32 *dwNumNotifications
+       );
+
+       typedef enum {
+               DiskIdSignature = 0x00000001,
+               DiskIdGuid = 0x00000002,
+               DiskIdUnKnown = 0x00001388
+       } CLUSDSK_DISKID_ENUM;
+
+#if 0
+       typedef struct {
+               CLUSDSK_DISKID_ENUM DiskIdType;
+               [switch_is(DiskIdType)] union {
+                       [case(DiskIdSignature)] uint32 DiskSignature;
+                       [case(DiskIdGuid)] GUID DiskGuid;
+               };
+       } CLUSDSK_DISKID;
+#endif
+}