--- /dev/null
+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
+}