-import "security.idl";
+import "winreg.idl", "misc.idl";
#include "idl_types.h"
[
- uuid(b97db8b2-4c63-11cf-bff6-08002be23f2f),
+ uuid("b97db8b2-4c63-11cf-bff6-08002be23f2f"),
version(3.0),
pointer_default(unique),
+ endpoint("ncacn_ip_tcp:"),
+ authservice("MSServerClusterMgmtAPI"),
helpstring("Failover Cluster Management API (clusapi)")
]
+#define MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE 0x7FFFFFFF
interface clusapi
{
#if 0
+ /*
+ * pidl does not yet have a real [context_handle] implementation, so we
+ * just use some defines here.
+ */
+
typedef [context_handle] void *HCLUSTER_RPC;
typedef [context_handle] void *HNODE_RPC;
typedef [context_handle] void *HGROUP_RPC;
typedef [context_handle] void *HNETINTERFACE_RPC;
typedef [context_handle] void *HBATCH_PORT_RPC;
#else
- #define HCLUSTER_RPC policy_handle
- #define HNODE_RPC policy_handle
- #define HGROUP_RPC policy_handle
- #define HRES_RPC policy_handle
- #define HKEY_RPC policy_handle
- #define HNOTIFY_RPC policy_handle
- #define HNETWORK_RPC policy_handle
- #define HNETINTERFACE_RPC policy_handle
- #define HBATCH_PORT_RPC policy_handle
+#define HCLUSTER_RPC policy_handle
+#define HNODE_RPC policy_handle
+#define HGROUP_RPC policy_handle
+#define HRES_RPC policy_handle
+#define HKEY_RPC policy_handle
+#define HNOTIFY_RPC policy_handle
+#define HNETWORK_RPC policy_handle
+#define HNETINTERFACE_RPC policy_handle
+#define HBATCH_PORT_RPC policy_handle
#endif
typedef struct {
/* Function 0x00 */
#if 0
+ /*
+ * pidl cannot generate code for functions that return structures in
+ * IDL, therefore pretend the function is void and add the returned
+ * structure as an out parameter. This is what we do with pretty much
+ * all the Open calls right now in this interface - gd
+ */
+
HCLUSTER_RPC
clusapi_OpenCluster(
- [ out ] error_status_t *Status
+ [ out ] WERROR *Status
);
#else
void
clusapi_OpenCluster(
- [ out ] error_status_t *Status,
+ [ out ] WERROR *Status,
[ out ] HCLUSTER_RPC *Cluster
);
#endif
/*****************/
/* Function 0x01 */
- error_status_t
+ WERROR
clusapi_CloseCluster(
[ in, out ] HCLUSTER_RPC *Cluster
);
/*****************/
/* Function 0x02 */
- error_status_t
+ WERROR
clusapi_SetClusterName(
[ in, string ] [charset(UTF16)] uint16 *NewClusterName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x03 */
- error_status_t
+ WERROR
clusapi_GetClusterName(
[ out, string ] [charset(UTF16)] uint16 **ClusterName,
[ out, string ] [charset(UTF16)] uint16 **NodeName
/*****************/
/* Function 0x04 */
- error_status_t
+ WERROR
clusapi_GetClusterVersion(
[ out ] uint16 *lpwMajorVersion,
[ out ] uint16 *lpwMinorVersion,
/*****************/
/* Function 0x05 */
- error_status_t
+ WERROR
clusapi_GetQuorumResource(
[ out, string ] [charset(UTF16)] uint16 **lpszResourceName,
[ out, string ] [charset(UTF16)] uint16 **lpszDeviceName,
[ out ] uint32 *pdwMaxQuorumLogSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x06 */
- error_status_t
+ WERROR
clusapi_SetQuorumResource(
[ in ] HRES_RPC hResource,
[ in, string ] [charset(UTF16)] uint16 *lpszDeviceName,
[ in ] uint32 dwMaxQuorumLogSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
+ typedef [bitmap32bit] bitmap {
+ CLUSTER_ENUM_NODE = 0x00000001,
+ CLUSTER_ENUM_RESTYPE = 0x00000002,
+ CLUSTER_ENUM_RESOURCE = 0x00000004,
+ CLUSTER_ENUM_GROUP = 0x00000008,
+ CLUSTER_ENUM_NETWORK = 0x00000010,
+ CLUSTER_ENUM_NETINTERFACE = 0x00000020,
+ CLUSTER_ENUM_INTERNAL_NETWORK = 0x80000000,
+ CLUSTER_ENUM_SHARED_VOLUME_RESOURCE = 0x40000000
+ } ClusterEnumType;
+
typedef struct {
- uint32 Type;
+ ClusterEnumType Type;
[string] [charset(UTF16)] uint16 *Name;
} ENUM_ENTRY;
/*****************/
/* Function 0x07 */
- error_status_t
+ WERROR
clusapi_CreateEnum(
- [ in ] uint32 dwType,
+ [ in ] ClusterEnumType dwType,
[ out ] ENUM_LIST **ReturnEnum,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
HRES_RPC
clusapi_OpenResource(
[ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenResource(
[ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HRES_RPC *hResource
);
#endif
/*****************/
/* Function 0x09 */
+ typedef [v1_enum] enum {
+ CLUSTER_RESOURCE_DEFAULT_MONITOR = 0x00000000,
+ CLUSTER_RESOURCE_SEPARATE_MONITOR = 0x00000001
+ } clusapi_CreateResourceFlags;
+
#if 0
HRES_RPC
clusapi_CreateResource(
[ in ] HGROUP_RPC hGroup,
[ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
[ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
- [ in ] uint32 dwFlags,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ in ] clusapi_CreateResourceFlags dwFlags,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
[ in ] HGROUP_RPC hGroup,
[ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
[ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
- [ in ] uint32 dwFlags,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ in ] clusapi_CreateResourceFlags dwFlags,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HRES_RPC *hResource
);
#endif
/*****************/
/* Function 0x0A */
- error_status_t
+ WERROR
clusapi_DeleteResource(
[ in ] HRES_RPC hResource,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x0B */
- error_status_t
+ WERROR
clusapi_CloseResource(
[ in, out ] HRES_RPC *Resource
);
/*****************/
/* Function 0x0C */
- error_status_t
+ typedef [v1_enum] enum {
+ ClusterResourceInitializing = 0x00000001,
+ ClusterResourceOnline = 0x00000002,
+ ClusterResourceOffline = 0x00000003,
+ ClusterResourceFailed = 0x00000004,
+ ClusterResourceOnlinePending = 0x00000081,
+ ClusterResourceOfflinePending = 0x00000082,
+ ClusterResourceStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterResourceState;
+
+ WERROR
clusapi_GetResourceState(
[ in ] HRES_RPC hResource,
- [ out ] uint32 *State,
+ [ out ] clusapi_ClusterResourceState *State,
[ out, string ] [charset(UTF16)] uint16 **NodeName,
[ out, string ] [charset(UTF16)] uint16 **GroupName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x0D */
- error_status_t
+ WERROR
clusapi_SetResourceName(
[ in ] HRES_RPC hResource,
[ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x0E */
- error_status_t
+ WERROR
clusapi_GetResourceId(
[ in ] HRES_RPC hResource,
[ out, string ] [charset(UTF16)] uint16 **pGuid,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x0F */
- error_status_t
+ WERROR
clusapi_GetResourceType(
[ in ] HRES_RPC hResource,
[ out, string ] [charset(UTF16)] uint16 **lpszResourceType,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x10 */
- error_status_t
+ WERROR
clusapi_FailResource(
[ in ] HRES_RPC hResource,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x11 */
- error_status_t
+ WERROR
clusapi_OnlineResource(
[ in ] HRES_RPC hResource,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x12 */
- error_status_t
+ WERROR
clusapi_OfflineResource(
[ in ] HRES_RPC hResource,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x13 */
- error_status_t
+ WERROR
clusapi_AddResourceDependency(
[ in ] HRES_RPC hResource,
[ in ] HRES_RPC hDependsOn,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x14 */
- error_status_t
+ WERROR
clusapi_RemoveResourceDependency(
[ in ] HRES_RPC hResource,
[ in ] HRES_RPC hDependsOn,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x15 */
- error_status_t
+ WERROR
clusapi_CanResourceBeDependent(
[ in ] HRES_RPC hResource,
[ in ] HRES_RPC hResourceDependent,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x16 */
- error_status_t
+ WERROR
clusapi_CreateResEnum(
[ in ] HRES_RPC hResource,
[ in ] uint32 dwType,
[ out ] ENUM_LIST **ReturnEnum,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x17 */
- error_status_t
+ WERROR
clusapi_AddResourceNode(
[ in ] HRES_RPC hResource,
[ in ] HNODE_RPC hNode,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x18 */
- error_status_t
+ WERROR
clusapi_RemoveResourceNode(
[ in ] HRES_RPC hResource,
[ in ] HNODE_RPC hNode,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x19 */
- error_status_t
+ WERROR
clusapi_ChangeResourceGroup(
[ in ] HRES_RPC hResource,
[ in ] HGROUP_RPC hGroup,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x1A */
- error_status_t
+ WERROR
clusapi_CreateResourceType(
[ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
[ in, string ] [charset(UTF16)] uint16 *lpszDisplayName,
[ in, string ] [charset(UTF16)] uint16 *lpszDllName,
[ in ] uint32 dwLooksAlive,
[ in ] uint32 dwIsAlive,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x1B */
- error_status_t
+ WERROR
clusapi_DeleteResourceType(
[ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
#if 0
HKEY_RPC
clusapi_GetRootKey(
- [ in ] uint32 samDesired,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ in ] winreg_AccessMask samDesired,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_GetRootKey(
- [ in ] uint32 samDesired,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ in ] winreg_AccessMask samDesired,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HKEY_RPC *phKey
);
#endif
[ in ] HKEY_RPC hKey,
[ in, string ] [charset(UTF16)] uint16 *lpSubKey,
[ in ] uint32 dwOptions,
- [ in ] uint32 samDesired,
+ [ in ] winreg_AccessMask samDesired,
[ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
[ out ] uint32 *lpdwDisposition,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
[ in ] HKEY_RPC hKey,
[ in, string ] [charset(UTF16)] uint16 *lpSubKey,
[ in ] uint32 dwOptions,
- [ in ] uint32 samDesired,
+ [ in ] winreg_AccessMask samDesired,
[ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
[ out ] uint32 *lpdwDisposition,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HKEY_RPC *phKey
);
#endif
clusapi_OpenKey(
[ in ] HKEY_RPC hKey,
[ in, string ] [charset(UTF16)] uint16 *lpSubKey,
- [ in ] uint32 samDesired,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ in ] winreg_AccessMask samDesired,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenKey(
[ in ] HKEY_RPC hKey,
[ in, string ] [charset(UTF16)] uint16 *lpSubKey,
- [ in ] uint32 samDesired,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ in ] winreg_AccessMask samDesired,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HKEY_RPC *phKey
);
#endif
/*****************/
/* Function 0x1F */
- error_status_t
+ WERROR
clusapi_EnumKey(
[ in ] HKEY_RPC hKey,
[ in ] uint32 dwIndex,
[ out, string ] [charset(UTF16)] uint16 **KeyName,
[ out ] NTTIME *lpftLastWriteTime,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x20 */
- error_status_t
+ WERROR
clusapi_SetValue(
[ in ] HKEY_RPC hKey,
[ in, string ] [charset(UTF16)] uint16 *lpValueName,
- [ in ] uint32 dwType,
+ [ in ] winreg_Type dwType,
[ in, size_is(cbData) ] uint8 *lpData,
[ in ] uint32 cbData,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x21 */
- error_status_t
+ WERROR
clusapi_DeleteValue(
[ in ] HKEY_RPC hKey,
[ in, string ] [charset(UTF16)] uint16 *lpValueName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x22 */
- error_status_t
+ WERROR
clusapi_QueryValue(
[ in ] HKEY_RPC hKey,
[ in, string ] [charset(UTF16)] uint16 *lpValueName,
- [ out ] uint32 *lpValueType,
+ [ out ] winreg_Type *lpValueType,
[ out, size_is(cbData) ] uint8 *lpData,
[ in ] uint32 cbData,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x23 */
- error_status_t
+ WERROR
clusapi_DeleteKey(
[ in ] HKEY_RPC hKey,
[ in, string ] [charset(UTF16)] uint16 *lpSubKey,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x24 */
- error_status_t
+ WERROR
clusapi_EnumValue(
[ in ] HKEY_RPC hKey,
[ in ] uint32 dwIndex,
[ out, string ] [charset(UTF16)] uint16 **lpValueName,
- [ out ] uint32 *lpType,
+ [ out ] winreg_Type *lpType,
[ out, size_is(*lpcbData) ] uint8 *lpData,
[ in, out ] uint32 *lpcbData,
[ out ] uint32 *TotalSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x25 */
- error_status_t
+ WERROR
clusapi_CloseKey(
[ in, out ] HKEY_RPC *pKey
);
/*****************/
/* Function 0x26 */
- error_status_t
+ WERROR
clusapi_QueryInfoKey(
[ in ] HKEY_RPC hKey,
[ out ] uint32 *lpcSubKeys,
[ out ] uint32 *lpcbMaxValueLen,
[ out ] uint32 *lpcbSecurityDescriptor,
[ out ] NTTIME *lpftLastWriteTime,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x27 */
- error_status_t
+ WERROR
clusapi_SetKeySecurity(
[ in ] HKEY_RPC hKey,
[ in ] uint32 SecurityInformation,
[ in ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x28 */
- error_status_t
+ WERROR
clusapi_GetKeySecurity(
[ in ] HKEY_RPC hKey,
[ in ] uint32 SecurityInformation,
[ in, out ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
HGROUP_RPC
clusapi_OpenGroup(
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenGroup(
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HGROUP_RPC *hGroup
);
#endif
HGROUP_RPC
clusapi_CreateGroup(
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_CreateGroup(
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HGROUP_RPC *hGroup
);
#endif
/*****************/
/* Function 0x2B */
- error_status_t
+ WERROR
clusapi_DeleteGroup(
[ in ] HGROUP_RPC Group,
[ in ] boolean8 force,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x2C */
- error_status_t
+ WERROR
clusapi_CloseGroup(
[ in, out ] HGROUP_RPC *Group
);
/*****************/
/* Function 0x2D */
- error_status_t
+ typedef [v1_enum] enum {
+ ClusterGroupOnline = 0x00000000,
+ ClusterGroupOffline = 0x00000001,
+ ClusterGroupFailed = 0x00000002,
+ ClusterGroupPartialOnline = 0x00000003,
+ ClusterGroupPending = 0x00000004,
+ ClusterGroupStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterGroupState;
+
+ WERROR
clusapi_GetGroupState(
[ in ] HGROUP_RPC hGroup,
- [ out ] uint32 *State,
+ [ out ] clusapi_ClusterGroupState *State,
[ out, string ] [charset(UTF16)] uint16 **NodeName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x2E */
- error_status_t
+ WERROR
clusapi_SetGroupName(
[ in ] HGROUP_RPC hGroup,
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x2F */
- error_status_t
+ WERROR
clusapi_GetGroupId(
[ in ] HGROUP_RPC hGroup,
[ out, string ] [charset(UTF16)] uint16 **pGuid,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x30 */
- error_status_t
+ WERROR
clusapi_GetNodeId(
[ in ] HNODE_RPC hNode,
[ out, string ] [charset(UTF16)] uint16 **pGuid,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x31 */
- error_status_t
+ WERROR
clusapi_OnlineGroup(
[ in ] HGROUP_RPC hGroup,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x32 */
- error_status_t
+ WERROR
clusapi_OfflineGroup(
[ in ] HGROUP_RPC hGroup,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x33 */
- error_status_t
+ WERROR
clusapi_MoveGroup(
[ in ] HGROUP_RPC hGroup,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x34 */
- error_status_t
+ WERROR
clusapi_MoveGroupToNode(
[ in ] HGROUP_RPC hGroup,
[ in ] HNODE_RPC hNode,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x35 */
- error_status_t
+ typedef [bitmap32bit] bitmap {
+ CLUSTER_GROUP_ENUM_CONTAINS = 0x00000001,
+ CLUSTER_GROUP_ENUM_NODES = 0x00000002
+ } ClusterGroupEnumType;
+
+ WERROR
clusapi_CreateGroupResourceEnum(
[ in ] HGROUP_RPC hGroup,
- [ in ] uint32 dwType,
+ [ in ] ClusterGroupEnumType dwType,
[ out ] ENUM_LIST **ReturnEnum,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x36 */
- error_status_t
+ WERROR
clusapi_SetGroupNodeList(
[ in ] HGROUP_RPC hGroup,
[ in, unique, size_is(cchListSize) ] uint16 *multiSzNodeList,
[ in ] uint32 cchListSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
#if 0
HNOTIFY_RPC
clusapi_CreateNotify(
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_CreateNotify(
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HNOTIFY_RPC *hNotify
);
#endif
/*****************/
/* Function 0x38 */
- error_status_t
+ WERROR
clusapi_CloseNotify(
[ in, out ] HNOTIFY_RPC *Notify
);
/*****************/
/* Function 0x39 */
- error_status_t
+ WERROR
clusapi_AddNotifyCluster(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HCLUSTER_RPC hCluster,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x3A */
- error_status_t
+ WERROR
clusapi_AddNotifyNode(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNODE_RPC hNode,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ out ] uint32 *dwStateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x3B */
- error_status_t
+ WERROR
clusapi_AddNotifyGroup(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HGROUP_RPC hGroup,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ out ] uint32 *dwStateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x3C */
- error_status_t
+ WERROR
clusapi_AddNotifyResource(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HRES_RPC hResource,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ out ] uint32 *dwStateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x3D */
- error_status_t
+ WERROR
clusapi_AddNotifyKey(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HKEY_RPC hKey,
[ in ] uint32 dwNotifyKey,
[ in ] uint32 Filter,
[ in ] boolean8 WatchSubTree,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x3E */
- error_status_t
+ WERROR
clusapi_ReAddNotifyNode(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNODE_RPC hNode,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ in ] uint32 StateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x3F */
- error_status_t
+ WERROR
clusapi_ReAddNotifyGroup(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HGROUP_RPC hGroup,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ in ] uint32 StateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x40 */
- error_status_t
+ WERROR
clusapi_ReAddNotifyResource(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HRES_RPC hResource,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ in ] uint32 StateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x41 */
- error_status_t
+ WERROR
clusapi_GetNotify(
[ in ] HNOTIFY_RPC hNotify,
[ out ] uint32 *dwNotifyKey,
[ out ] uint32 *dwFilter,
[ out ] uint32 *dwStateSequence,
[ out, string ] [charset(UTF16)] uint16 **Name,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
HNODE_RPC
clusapi_OpenNode(
[ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenNode(
[ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HNODE_RPC *hNode
);
#endif
/*****************/
/* Function 0x43 */
- error_status_t
+ WERROR
clusapi_CloseNode(
[ in, out ] HNODE_RPC *Node
);
/*****************/
/* Function 0x44 */
- error_status_t
+ typedef [v1_enum] enum {
+ ClusterNodeUp = 0x00000000,
+ ClusterNodeDown = 0x00000001,
+ ClusterNodePaused = 0x00000002,
+ ClusterNodeJoining = 0x00000003,
+ ClusterNodeStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterNodeState;
+
+ WERROR
clusapi_GetNodeState(
[ in ] HNODE_RPC hNode,
- [ out ] uint32 *State,
- [ out ] error_status_t *rpc_status
+ [ out ] clusapi_ClusterNodeState *State,
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x45 */
- error_status_t
+ WERROR
clusapi_PauseNode(
[ in ] HNODE_RPC hNode,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x46 */
- error_status_t
+ WERROR
clusapi_ResumeNode(
[ in ] HNODE_RPC hNode,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x47 */
- error_status_t
+ WERROR
clusapi_EvictNode(
[ in ] HNODE_RPC hNode,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x48 */
- error_status_t
+ WERROR
clusapi_NodeResourceControl(
[ in ] HRES_RPC hResource,
[ in ] HNODE_RPC hNode,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x49 */
- error_status_t
+ typedef [v1_enum] enum {
+ CLUS_RESCLASS_UNKNOWN = 0x00000000,
+ CLUS_RESCLASS_STORAGE = 0x00000001,
+ CLUS_RESCLASS_NETWORK = 0x00000002
+ } clusapi_ResourceClass;
+
+ typedef [public] struct {
+ clusapi_ResourceClass Class;
+ uint32 SubClass;
+ } CLUS_RESOURCE_CLASS_INFO;
+
+ typedef [v1_enum] enum {
+ CLUSCTL_RESOURCE_UNKNOWN = 0x01000000,
+ CLUSCTL_RESOURCE_GET_CHARACTERISTICS = 0x01000005,
+ CLUSCTL_RESOURCE_GET_FLAGS = 0x01000009,
+ CLUSCTL_RESOURCE_GET_CLASS_INFO = 0x0100000D,
+ CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES = 0x01000011,
+ CLUSCTL_RESOURCE_GET_NAME = 0x01000029,
+ CLUSCTL_RESOURCE_GET_RESOURCE_TYPE = 0x0100002D,
+ CLUSCTL_RESOURCE_GET_ID = 0x01000039,
+ CLUSCTL_RESOURCE_ENUM_COMMON_PROPERTIES = 0x01000051,
+ CLUSCTL_RESOURCE_GET_RO_COMMON_PROPERTIES = 0x01000055,
+ CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES = 0x01000059,
+ CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES = 0x0140005E,
+ CLUSCTL_RESOURCE_VALIDATE_COMMON_PROPERTIES = 0x01000061,
+ CLUSCTL_RESOURCE_GET_COMMON_PROPERTY_FMTS = 0x01000065,
+ CLUSCTL_RESOURCE_ENUM_PRIVATE_PROPERTIES = 0x01000079,
+ CLUSCTL_RESOURCE_GET_RO_PRIVATE_PROPERTIES = 0x0100007D,
+ CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES = 0x01000081,
+ CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES = 0x01400086,
+ CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES = 0x01000089,
+ CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTY_FMTS = 0x0100008D,
+ CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT = 0x014000A2,
+ CLUSCTL_RESOURCE_DELETE_REGISTRY_CHECKPOINT = 0x014000A6,
+ CLUSCTL_RESOURCE_GET_REGISTRY_CHECKPOINTS = 0x010000A9,
+ CLUSCTL_RESOURCE_ADD_CRYPTO_CHECKPOINT = 0x014000AE,
+ CLUSCTL_RESOURCE_DELETE_CRYPTO_CHECKPOINT = 0x014000B2,
+ CLUSCTL_RESOURCE_GET_CRYPTO_CHECKPOINTS = 0x010000B5,
+ CLUSCTL_RESOURCE_UPGRADE_DLL = 0x014000BA,
+ CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_64BIT = 0x014000BE,
+ CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_32BIT = 0x014000C2,
+ CLUSCTL_RESOURCE_GET_NETWORK_NAME = 0x01000169,
+ CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS = 0x01000172,
+ CLUSCTL_RESOURCE_GET_DNS_NAME = 0x01000175,
+ CLUSCTL_RESOURCE_NETNAME_SET_PWD_INFO = 0x0100017A,
+ CLUSCTL_RESOURCE_NETNAME_DELETE_CO = 0x0100017E,
+ CLUSCTL_RESOURCE_NETNAME_VALIDATE_VCO = 0x01000181,
+ CLUSCTL_RESOURCE_NETNAME_RESET_VCO = 0x01000185,
+ CLUSCTL_RESOURCE_NETNAME_CREDS_UPDATED = 0x01c0018a,
+ CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO = 0x01000191,
+ CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = 0x01000199,
+ CLUSCTL_RESOURCE_IPADDRESS_RENEW_LEASE = 0x014001BE,
+ CLUSCTL_RESOURCE_IPADDRESS_RELEASE_LEASE = 0x014001C2,
+ CLUSCTL_RESOURCE_QUERY_MAINTENANCE_MODE = 0x010001E1,
+ CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE = 0x014001E6,
+ CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER = 0x014001EA,
+ CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX = 0x010001F1,
+ CLUSCTL_RESOURCE_STORAGE_GET_DIRTY = 0x01000219,
+ CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS = 0x01000211,
+ CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO = 0x01000225,
+ CLUSCTL_RESOURCE_VM_START_MIGRATION = 0x01600004,
+ CLUSCTL_RESOURCE_VM_CANCEL_MIGRATION = 0x01600008,
+ CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE = 0x01400296,
+ CLUSCTL_RESOURCE_ENABLE_SHARED_VOLUME_DIRECTIO = 0x0140028a,
+ CLUSCTL_RESOURCE_DISABLE_SHARED_VOLUME_DIRECTIO = 0x0140028e,
+ CLUSCTL_RESOURCE_SET_SHARED_VOLUME_BACKUP_MODE = 0x0140029a,
+ CLUSCTL_RESOURCE_GET_RELATED_RESOURCE_NAMES = 0x01001fad,
+ CLUSCTL_RESOURCE_POOL_GET_DRIVE_INFO = 0x010002b5,
+ CLUSCTL_RESOURCE_CLOUD_WITNESS_UPDATE_TOKEN = 0x014020e6,
+ CLUSCTL_RESOURCE_NETNAME_CHECK_OU_PERMISSIONS = 0x07002121,
+ CLUSCTL_RESOURCE_NETNAME_CHECK_AD_STATE = 0x07002125
+ } clusapi_ResourceControlCode;
+
+ WERROR
clusapi_ResourceControl(
[ in ] HRES_RPC hResource,
- [ in ] uint32 dwControlCode,
+ [ in ] clusapi_ResourceControlCode dwControlCode,
[ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
[ in ] uint32 nInBufferSize,
[ out, size_is(nOutBufferSize),
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x4A */
- error_status_t
+ WERROR
clusapi_NodeResourceTypeControl(
[ in ] HCLUSTER_RPC hCluster,
[ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x4B */
- error_status_t
+ typedef [v1_enum] enum {
+ CLUSCTL_RESOURCE_TYPE_UNKNOWN = 0x02000000,
+ CLUSCTL_RESOURCE_TYPE_GET_CHARACTERISTICS = 0x02000005,
+ CLUSCTL_RESOURCE_TYPE_GET_FLAGS = 0x02000009,
+ CLUSCTL_RESOURCE_TYPE_GET_CLASS_INFO = 0x0200000D,
+ CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES = 0x02000011,
+ CLUSCTL_RESOURCE_TYPE_GET_ARB_TIMEOUT = 0x02000015,
+ CLUSCTL_RESOURCE_TYPE_ENUM_COMMON_PROPERTIES = 0x02000051,
+ CLUSCTL_RESOURCE_TYPE_GET_RO_COMMON_PROPERTIES = 0x02000055,
+ CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTIES = 0x02000059,
+ CLUSCTL_RESOURCE_TYPE_SET_COMMON_PROPERTIES = 0x0240005E,
+ CLUSCTL_RESOURCE_TYPE_VALIDATE_COMMON_PROPERTIES = 0x02000061,
+ CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTY_FMTS = 0x02000065,
+ CLUSCTL_RESOURCE_TYPE_GET_COMMON_RESOURCE_PROPERTY_FMTS = 0x02000069,
+ CLUSCTL_RESOURCE_TYPE_ENUM_PRIVATE_PROPERTIES = 0x02000079,
+ CLUSCTL_RESOURCE_TYPE_GET_RO_PRIVATE_PROPERTIES = 0x0200007D,
+ CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES = 0x02000081,
+ CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES = 0x02400086,
+ CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES = 0x02000089,
+ CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTY_FMTS = 0x0200008D,
+ CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_RESOURCE_PROPERTY_FMTS= 0x02000091,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS = 0x02000195,
+ CLUSCTL_RESOURCE_TYPE_NETNAME_VALIDATE_NETNAME = 0x02000235,
+ CLUSCTL_RESOURCE_TYPE_VALIDATE_PATH = 0x02000231,
+ CLUSCTL_RESOURCE_TYPE_GEN_APP_VALIDATE_DIRECTORY = 0x02000239,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DRIVELETTERS = 0x020001ED,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX = 0x020001F5,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_REMAP_DRIVELETTER = 0x02000201,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID = 0x02000205,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE = 0x02000209,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_RELEASE_OWNERSHIP = 0x0240020E,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CSV_FILE = 0x1000229,
+ CLUSCTL_RESOURCE_TYPE_CLOUD_WITNESS_VALIDATE_CREDENTIALS= 0x020020e1,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_LOGDISKS = 0x02002149,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_TARGET_DATADISKS = 0x0200214D,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_SOURCE_DATADISKS = 0x02002151,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICA_VOLUMES = 0x02002159,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_LOG_VOLUME = 0x0200215D,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICATED_DISKS = 0x02002155,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_RESOURCE_GROUP = 0x02002161
+ } clusapi_ResourceTypeControlCode;
+
+ WERROR
clusapi_ResourceTypeControl(
[ in ] HCLUSTER_RPC hCluster,
[ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
- [ in ] uint32 dwControlCode,
+ [ in ] clusapi_ResourceTypeControlCode dwControlCode,
[ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
[ in ] uint32 nInBufferSize,
[ out, size_is(nOutBufferSize),
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x4C */
- error_status_t
+ WERROR
clusapi_NodeGroupControl(
[ in ] HGROUP_RPC hGroup,
[ in ] HNODE_RPC hNode,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x4D */
- error_status_t
+ typedef [v1_enum] enum {
+ CLUSCTL_GROUP_UNKNOWN = 0x03000000,
+ CLUSCTL_GROUP_GET_CHARACTERISTICS = 0x03000005,
+ CLUSCTL_GROUP_GET_FLAGS = 0x03000009,
+ CLUSCTL_GROUP_GET_NAME = 0x03000029,
+ CLUSCTL_GROUP_GET_ID = 0x03000039,
+ CLUSCTL_GROUP_ENUM_COMMON_PROPERTIES = 0x03000051,
+ CLUSCTL_GROUP_GET_RO_COMMON_PROPERTIES = 0x03000055,
+ CLUSCTL_GROUP_GET_COMMON_PROPERTIES = 0x03000059,
+ CLUSCTL_GROUP_SET_COMMON_PROPERTIES = 0x0340005E,
+ CLUSCTL_GROUP_VALIDATE_COMMON_PROPERTIES = 0x03000061,
+ CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS = 0x03000065,
+ CLUSCTL_GROUP_ENUM_PRIVATE_PROPERTIES = 0x03000079,
+ CLUSCTL_GROUP_GET_RO_PRIVATE_PROPERTIES = 0x0300007D,
+ CLUSCTL_GROUP_GET_PRIVATE_PROPERTIES = 0x03000081,
+ CLUSCTL_GROUP_SET_PRIVATE_PROPERTIES = 0x03400086,
+ CLUSCTL_GROUP_VALIDATE_PRIVATE_PROPERTIES = 0x03000089
+ } clusapi_GroupControlCode;
+
+ WERROR
clusapi_GroupControl(
[ in ] HGROUP_RPC hGroup,
- [ in ] uint32 dwControlCode,
+ [ in ] clusapi_GroupControlCode dwControlCode,
[ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
[ in ] uint32 nInBufferSize,
[ out, size_is(nOutBufferSize),
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x4E */
- error_status_t
+ WERROR
clusapi_NodeNodeControl(
[ in ] HNODE_RPC hNode,
[ in ] HNODE_RPC hHostNode,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x4F */
- error_status_t
+ typedef [v1_enum] enum {
+ CLUSCTL_NODE_UNKNOWN = 0x04000000,
+ CLUSCTL_NODE_GET_CHARACTERISTICS = 0x04000005,
+ CLUSCTL_NODE_GET_FLAGS = 0x04000009,
+ CLUSCTL_NODE_GET_NAME = 0x04000029,
+ CLUSCTL_NODE_GET_ID = 0x04000039,
+ CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME = 0x04000041,
+ CLUSCTL_NODE_ENUM_COMMON_PROPERTIES = 0x04000051,
+ CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES = 0x04000055,
+ CLUSCTL_NODE_GET_COMMON_PROPERTIES = 0x04000059,
+ CLUSCTL_NODE_SET_COMMON_PROPERTIES = 0x0440005E,
+ CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES = 0x04000061,
+ CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES = 0x04000079,
+ CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES = 0x0400007D,
+ CLUSCTL_NODE_GET_PRIVATE_PROPERTIES = 0x04000081,
+ CLUSCTL_NODE_SET_PRIVATE_PROPERTIES = 0x04400086,
+ CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES = 0x04000089
+ } clusapi_NodeControlCode;
+
+ WERROR
clusapi_NodeControl(
[ in ] HNODE_RPC hNode,
- [ in ] uint32 dwControlCode,
+ [ in ] clusapi_NodeControlCode dwControlCode,
[ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
[ in ] uint32 nInBufferSize,
[ out, size_is(nOutBufferSize),
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x50 */
- error_status_t
+ WERROR
Opnum80NotUsedOnWire(void);
/*****************/
HNETWORK_RPC
clusapi_OpenNetwork(
[ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenNetwork(
[ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HNETWORK_RPC *hNetwork
);
#endif
/*****************/
/* Function 0x52 */
- error_status_t
+ WERROR
clusapi_CloseNetwork(
[ in, out ] HNETWORK_RPC *Network
);
/*****************/
/* Function 0x53 */
- error_status_t
+ typedef [v1_enum] enum {
+ ClusterNetworkUnavailable = 0x00000000,
+ ClusterNetworkDown = 0x00000001,
+ ClusterNetworkPartitioned = 0x00000002,
+ ClusterNetworkUp = 0x00000003,
+ ClusterNetworkStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterNetworkState;
+
+ WERROR
clusapi_GetNetworkState(
[ in ] HNETWORK_RPC hNetwork,
- [ out ] uint32 *State,
- [ out ] error_status_t *rpc_status
+ [ out ] clusapi_ClusterNetworkState *State,
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x54 */
- error_status_t
+ WERROR
clusapi_SetNetworkName(
[ in ] HNETWORK_RPC hNetwork,
[ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x55 */
- error_status_t
+ WERROR
clusapi_CreateNetworkEnum(
[ in ] HNETWORK_RPC hNetwork,
[ in ] uint32 dwType,
[ out ] ENUM_LIST **ReturnEnum,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x56 */
- error_status_t
+ WERROR
clusapi_GetNetworkId(
[ in ] HNETWORK_RPC hNetwork,
[ out, string ] [charset(UTF16)] uint16 **pGuid,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x57 */
- error_status_t
+ WERROR
clusapi_SetNetworkPriorityOrder(
[ in, range(0, 1000)] uint32 NetworkCount,
[ in, string, size_is(NetworkCount) ] [charset(UTF16)] uint16 NetworkIdList[*],
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x58 */
- error_status_t
+ WERROR
clusapi_NodeNetworkControl(
[ in ] HNETWORK_RPC hNetwork,
[ in ] HNODE_RPC hNode,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x59 */
- error_status_t
+ WERROR
clusapi_NetworkControl(
[ in ] HNETWORK_RPC hNetwork,
[ in ] uint32 dwControlCode,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x5A */
- error_status_t
+ WERROR
clusapi_AddNotifyNetwork(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNETWORK_RPC hNetwork,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ out ] uint32 *dwStateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x5B */
- error_status_t
+ WERROR
clusapi_ReAddNotifyNetwork(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNETWORK_RPC hNetwork,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ in ] uint32 StateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
HNETINTERFACE_RPC
clusapi_OpenNetInterface(
[ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenNetInterface(
[ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HNETINTERFACE_RPC *hNetInterface
);
#endif
/*****************/
/* Function 0x5D */
- error_status_t
+ WERROR
clusapi_CloseNetInterface(
[ in, out ] HNETINTERFACE_RPC *NetInterface
);
/*****************/
/* Function 0x5E */
- error_status_t
+ typedef [v1_enum] enum {
+ ClusterNetInterfaceFailed = 0x00000000,
+ ClusterNetInterfaceUnreachable = 0x00000001,
+ ClusterNetInterfaceUnavailable = 0x00000002,
+ ClusterNetInterfaceUp = 0x00000003,
+ ClusterNetInterfaceStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterNetInterfaceState;
+
+ WERROR
clusapi_GetNetInterfaceState(
[ in ] HNETINTERFACE_RPC hNetInterface,
- [ out ] uint32 *State,
- [ out ] error_status_t *rpc_status
+ [ out ] clusapi_ClusterNetInterfaceState *State,
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x5F */
- error_status_t
+ WERROR
clusapi_GetNetInterface(
[ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
[ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
[ out, string ] [charset(UTF16)] uint16 **lppszInterfaceName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x60 */
- error_status_t
+ WERROR
clusapi_GetNetInterfaceId(
[ in ] HNETINTERFACE_RPC hNetInterface,
[ out, string ] [charset(UTF16)] uint16 **pGuid,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x61 */
- error_status_t
+ WERROR
clusapi_NodeNetInterfaceControl(
[ in ] HNETINTERFACE_RPC hNetInterface,
[ in ] HNODE_RPC hNode,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x62 */
- error_status_t
+ WERROR
clusapi_NetInterfaceControl(
[ in ] HNETINTERFACE_RPC hNetInterface,
[ in ] uint32 dwControlCode,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x63 */
- error_status_t
+ WERROR
clusapi_AddNotifyNetInterface(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNETINTERFACE_RPC hNetInterface,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ out ] uint32 *dwStateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x64 */
- error_status_t
+ WERROR
clusapi_ReAddNotifyNetInterface(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNETINTERFACE_RPC hNetInterface,
[ in ] uint32 dwFilter,
[ in ] uint32 dwNotifyKey,
[ in ] uint32 StateSequence,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x65 */
- error_status_t
+ WERROR
clusapi_CreateNodeEnum(
[ in ] HNODE_RPC hNode,
[ in ] uint32 dwType,
[ out ] ENUM_LIST **ReturnEnum,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x66 */
- error_status_t
+ WERROR
clusapi_GetClusterVersion2(
[ out ] uint16 *lpwMajorVersion,
[ out ] uint16 *lpwMinorVersion,
[ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
[ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion,
[ out ] CLUSTER_OPERATIONAL_VERSION_INFO **ppClusterOpVerInfo,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x67 */
- error_status_t
+ typedef [bitmap32bit] bitmap {
+ CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001,
+ CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES = 0x00000002
+ } ClusterResTypeEnumType;
+
+ WERROR
clusapi_CreateResTypeEnum(
[ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
- [ in ] uint32 dwType,
+ [ in ] ClusterResTypeEnumType dwType,
[ out ] ENUM_LIST **ReturnEnum,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x68 */
- error_status_t
+ WERROR
clusapi_BackupClusterDatabase(
[ in, string ] [charset(UTF16)] uint16 *lpszPathName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x69 */
- error_status_t
+ WERROR
clusapi_NodeClusterControl(
[ in ] HCLUSTER_RPC hCluster,
[ in ] HNODE_RPC hHostNode,
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x6A */
- error_status_t
+ typedef [v1_enum] enum {
+ CLUSCTL_CLUSTER_UNKNOWN = 0x07000000,
+ CLUSCTL_CLUSTER_GET_FQDN = 0x0700003D,
+ CLUSCTL_CLUSTER_CHECK_VOTER_EVICT = 0x07000045,
+ CLUSCTL_CLUSTER_CHECK_VOTER_DOWN = 0x07000049,
+ CLUSCTL_CLUSTER_SHUTDOWN = 0x0700004D,
+ CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES = 0x07000051,
+ CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES = 0x07000055,
+ CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES = 0x07000059,
+ CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES = 0x0740005E,
+ CLUSCTL_CLUSTER_VALIDATE_COMMON_PROPERTIES = 0x07000061,
+ CLUSCTL_CLUSTER_GET_COMMON_PROPERTY_FMTS = 0x07000065,
+ CLUSCTL_CLUSTER_ENUM_PRIVATE_PROPERTIES = 0x07000079,
+ CLUSCTL_CLUSTER_GET_RO_PRIVATE_PROPERTIES = 0x0700007D,
+ CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTIES = 0x07000081,
+ CLUSCTL_CLUSTER_SET_PRIVATE_PROPERTIES = 0x07400086,
+ CLUSCTL_CLUSTER_VALIDATE_PRIVATE_PROPERTIES = 0x07000089,
+ CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID = 0x07000291,
+ CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION = 0x074000ce,
+ CLUSCTL_CLUSTER_CLEAR_UPGRADE_IN_PROGRESS = 0x074000d2,
+ CLUSCTL_CLUSTER_IS_READY_FOR_UPGRADE = 0x070000d5
+ } clusapi_ClusterControlCode;
+
+ typedef [v1_enum] enum {
+ CLUSPROP_SYNTAX_ENDMARK = 0x00000000,
+ CLUSPROP_SYNTAX_NAME = 0x00040003,
+ CLUSPROP_SYNTAX_RESCLASS = 0x00020002,
+ CLUSPROP_SYNTAX_LIST_VALUE_SZ = 0x00010003,
+ CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = 0x00010004,
+ CLUSPROP_SYNTAX_LIST_VALUE_DWORD = 0x00010002,
+ CLUSPROP_SYNTAX_LIST_VALUE_BINARY = 0x00010001,
+ CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = 0x00010005,
+ CLUSPROP_SYNTAX_LIST_VALUE_LONG = 0x00010007,
+ CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = 0x00010008,
+ CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = 0x00010009,
+ CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = 0x0001000a,
+ CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = 0x00010006,
+ CLUSPROP_SYNTAX_LIST_VALUE_WORD = 0x0001000b,
+ CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = 0x0001000c,
+ CLUSPROP_SYNTAX_DISK_SIGNATURE = 0x00050002,
+ CLUSPROP_SYNTAX_SCSI_ADDRESS = 0x00060002,
+ CLUSPROP_SYNTAX_DISK_NUMBER = 0x00070002,
+ CLUSPROP_SYNTAX_PARTITION_INFO = 0x00080001,
+ CLUSPROP_SYNTAX_DISK_SERIALNUMBER = 0x000a0003,
+ CLUSPROP_SYNTAX_DISK_GUID = 0x000b0003,
+ CLUSPROP_SYNTAX_DISK_SIZE = 0x000c0006,
+ CLUSPROP_SYNTAX_PARTITION_INFO_EX = 0x000d0001
+ } CLUSTER_PROPERTY_SYNTAX;
+
+ typedef struct {
+ CLUSTER_PROPERTY_SYNTAX Syntax;
+ uint32 Size;
+ [subcontext(0),subcontext_size(Size)] [flag(NDR_REMAINING)] DATA_BLOB Buffer;
+ [flag(NDR_ALIGN4)] DATA_BLOB Padding;
+ } clusapi_propertyValues;
+
+ typedef struct {
+ [value(CLUSPROP_SYNTAX_NAME)] CLUSTER_PROPERTY_SYNTAX syntax_name;
+ [value(strlen_m_term(buffer)*2)] uint32 size;
+ nstring buffer;
+ [flag(NDR_ALIGN2)] DATA_BLOB padding;
+ clusapi_propertyValues PropertyValues;
+ [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
+ } clusapi_propertyValue;
+
+ typedef [public] struct {
+ uint32 propertyCount;
+ clusapi_propertyValue propertyValues[propertyCount];
+ [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
+ } clusapi_PROPERTY_LIST;
+
+ WERROR
clusapi_ClusterControl(
[ in ] HCLUSTER_RPC hCluster,
- [ in ] uint32 dwControlCode,
+ [ in ] clusapi_ClusterControlCode dwControlCode,
[ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
[ in ] uint32 nInBufferSize,
[ out, size_is(nOutBufferSize),
[ in ] uint32 nOutBufferSize,
[ out ] uint32 *lpBytesReturned,
[ out ] uint32 *lpcbRequired,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x6B */
- error_status_t
+ WERROR
clusapi_UnblockGetNotifyCall(
[ in ] HNOTIFY_RPC hNotify
);
/*****************/
/* Function 0x6C */
- error_status_t
+ WERROR
clusapi_SetServiceAccountPassword(
[ in, string ] [charset(UTF16)] uint16 *lpszNewPassword,
[ in ] IDL_CLUSTER_SET_PASSWORD_FLAGS dwFlags,
/*****************/
/* Function 0x6D */
- error_status_t
+ WERROR
clusapi_SetResourceDependencyExpression(
[ in ] HRES_RPC hResource,
[ in, string, unique ] [charset(UTF16)] uint16 *lpszDependencyExpression,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x6E */
- error_status_t
+ WERROR
clusapi_GetResourceDependencyExpression(
[ in ] HRES_RPC hResource,
[ out, string ] [charset(UTF16)] uint16 **lpszDependencyExpression,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x6F */
- error_status_t
+ WERROR
Opnum111NotUsedOnWire(void);
/*****************/
/* Function 0x70 */
- error_status_t
+ WERROR
clusapi_GetResourceNetworkName(
[ in ] HRES_RPC hResource,
[ out, string ] [charset(UTF16)] uint16 **lpszName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x71 */
- error_status_t
+ WERROR
clusapi_ExecuteBatch(
[ in ] HKEY_RPC hKey,
[ in ] uint32 cbData,
[ in, size_is(cbData)] uint8 *lpData,
[ out ] int *pdwFailedCommand,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x72 */
- error_status_t
+ WERROR
clusapi_CreateBatchPort(
[ in ] HKEY_RPC hKey,
[ out ] HBATCH_PORT_RPC *phBatchPort,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x73 */
- error_status_t
+ WERROR
clusapi_GetBatchNotification(
[ in ] HBATCH_PORT_RPC hBatchNotify,
[ out ] uint32 *cbData,
/*****************/
/* Function 0x74 */
- error_status_t
+ WERROR
clusapi_CloseBatchPort(
[ in, out ] HBATCH_PORT_RPC *phBatchPort
);
/*****************/
/* Function 0x75 */
+
+ typedef [bitmap32bit] bitmap {
+ CLUSAPI_READ_ACCESS = 0x00000001,
+ CLUSAPI_CHANGE_ACCESS = 0x00000002,
+ CLUSAPI_GENERIC_READ = 0x80000000,
+ CLUSAPI_GENERIC_WRITE = 0x40000000,
+ CLUSAPI_GENERIC_EXECUTE = 0x20000000,
+ CLUSAPI_GENERIC_ALL = 0x10000000,
+ CLUSAPI_MAXIMUM_ALLOWED = 0x02000000
+ } clusapi_DesiredAccessMask;
+
#if 0
HCLUSTER_RPC
clusapi_OpenClusterEx(
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status
+ [ out ] WERROR *Status
);
#else
void
clusapi_OpenClusterEx(
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
+ [ out ] WERROR *Status,
[ out ] HCLUSTER_RPC *hCluster
);
#endif
HNODE_RPC
clusapi_OpenNodeEx(
[ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenNodeEx(
[ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HNODE_RPC *hNode
);
#endif
HGROUP_RPC
clusapi_OpenGroupEx(
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenGroupEx(
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HGROUP_RPC *hGroup
);
#endif
HRES_RPC
clusapi_OpenResourceEx(
[ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenResourceEx(
[ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HRES_RPC *hResource
);
#endif
HNETWORK_RPC
clusapi_OpenNetworkEx(
[ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenNetworkEx(
[ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HNETWORK_RPC *hNetwork
);
#endif
HNETINTERFACE_RPC
clusapi_OpenNetInterfaceEx(
[ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_OpenNetInterfaceEx(
[ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
- [ in ] uint32 dwDesiredAccess,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
[ out ] uint32 *lpdwGrantedAccess,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HNETINTERFACE_RPC *hNetInterface
);
#endif
/*****************/
/* Function 0x7B */
- error_status_t
+ WERROR
clusapi_ChangeCsvState(
[ in ] HRES_RPC hResource,
[ in ] uint32 dwState,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x7C */
- error_status_t
+ WERROR
clusapi_CreateNodeEnumEx(
[in] HNODE_RPC hNode,
[in] uint32 dwType,
[in] uint32 dwOptions,
[out] ENUM_LIST **ReturnIdEnum,
[out] ENUM_LIST **ReturnNameEnum,
- [out] error_status_t* rpc_status
+ [out] WERROR* rpc_status
);
/*****************/
/* Function 0x7D */
- error_status_t
+ WERROR
clusapi_CreateEnumEx(
[in] HCLUSTER_RPC hCluster,
- [in] uint32 dwType,
+ [in] ClusterEnumType dwType,
[in] uint32 dwOptions,
[out] ENUM_LIST **ReturnIdEnum,
[out] ENUM_LIST **ReturnNameEnum,
- [out] error_status_t* rpc_status
+ [out] WERROR* rpc_status
);
/*****************/
/* Function 0x7E */
- error_status_t
+ WERROR
clusapi_PauseNodeEx(
[ in ] HNODE_RPC hNode,
[ in ] boolean8 bDrainNode,
[ in ] uint32 dwPauseFlags,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x7F */
- error_status_t
+ WERROR
clusapi_PauseNodeWithDrainTarget(
[ in ] HNODE_RPC hNode,
[ in ] uint32 dwPauseFlags,
[ in ] HNODE_RPC hNodeDrainTarget,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x80 */
- error_status_t
+ WERROR
clusapi_ResumeNodeEx(
[ in ] HNODE_RPC hNode,
[ in ] uint32 dwResumeFailbackType,
[ in ] uint32 dwResumeFlagsReserved,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
clusapi_CreateGroupEx(
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
[ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_CreateGroupEx(
[ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
[ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
- [ out ] error_status_t *Status,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
[ out ] HGROUP_RPC *hGroup
);
#endif
/*****************/
/* Function 0x82 */
- error_status_t
+ WERROR
clusapi_OnlineGroupEx(
[ in ] HGROUP_RPC hGroup,
[ in ] uint32 dwOnlineFlags,
[ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
[ in ] uint32 cbInBufferSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x83 */
- error_status_t
+ WERROR
clusapi_OfflineGroupEx(
[ in ] HGROUP_RPC hGroup,
[ in ] uint32 dwOfflineFlags,
[ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
[ in ] uint32 cbInBufferSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x84 */
- error_status_t
+ WERROR
clusapi_MoveGroupEx(
[ in ] HGROUP_RPC hGroup,
[ in ] uint32 dwMoveFlags,
[ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
[ in ] uint32 cbInBufferSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x85 */
- error_status_t
+ WERROR
clusapi_MoveGroupToNodeEx(
[ in ] HGROUP_RPC hGroup,
[ in ] HNODE_RPC hNode,
[ in ] uint32 dwMoveFlags,
[ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
[ in ] uint32 cbInBufferSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x86 */
- error_status_t
+ WERROR
clusapi_CancelClusterGroupOperation(
[ in ] HGROUP_RPC hGroup,
[ in ] uint32 dwCancelFlags,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x87 */
- error_status_t
+ WERROR
clusapi_OnlineResourceEx(
[ in ] HRES_RPC hResource,
[ in ] uint32 dwOnlineFlags,
[ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
[ in ] uint32 cbInBufferSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x88 */
- error_status_t
+ WERROR
clusapi_OfflineResourceEx(
[ in ] HRES_RPC hResource,
[ in ] uint32 dwOfflineFlags,
[ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
[ in ] uint32 cbInBufferSize,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
#define HGENERIC_RPC policy_handle
#endif
typedef struct {
- uint32 dwObjectType; // really of type CLUSTER_OBJECT_TYPE_RPC
+ uint32 dwObjectType; /* really of type CLUSTER_OBJECT_TYPE_RPC */
hyper FilterFlags;
} NOTIFY_FILTER_AND_TYPE_RPC;
/*****************/
/* Function 0x89 */
- //
- // Notify interface V2 functions
- //
+ /*
+ * Notify interface V2 functions
+ */
#if 0
HNOTIFY_RPC
clusapi_CreateNotifyV2(
- [ out ] error_status_t *rpc_error,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_error,
+ [ out ] WERROR *rpc_status
);
#else
void
clusapi_CreateNotifyV2(
- [ out ] error_status_t *rpc_error,
- [ out ] error_status_t *rpc_status,
+ [ out ] WERROR *rpc_error,
+ [ out ] WERROR *rpc_status,
[ out ] HNOTIFY_RPC *hNotify
);
/*****************/
/* Function 0x8A */
- error_status_t
+ WERROR
clusapi_AddNotifyV2(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HGENERIC_RPC hObject,
[ in ] uint32 dwNotifyKey,
[ in ] uint32 dwVersion,
[ in ] boolean8 isTargetedAtObject,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x8B */
- error_status_t
+ WERROR
clusapi_GetNotifyV2(
[ in ] HNOTIFY_RPC hNotify,
[ out, size_is(,*dwNumNotifications) ] NOTIFICATION_RPC **Notifications,
/*****************/
/* Function 0x8C */
- error_status_t
+ WERROR
clusapi_QueryAllValues(
[ in ] HKEY_RPC hKey,
[ out ] uint32 *pcbData,
[ out, size_is(1, *pcbData) ] uint8 ** ppData,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
typedef struct {
/*****************/
/* Function 0x8D */
- error_status_t
+ WERROR
clusapi_StmFindDisk(
[ in ] HCLUSTER_RPC hCluster,
[ in ] uint32 dwFlags,
[ in, size_is(uniqueIdSize), unique ] uint8 *pUniqueId,
[ in ] uint32 uniqueIdSize,
[ out, ref, string ] [charset(UTF16)] uint16 **ppszDeviceName,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
typedef struct{
/*****************/
/* Function 0x8E */
- error_status_t
+ WERROR
clusapi_ClusterMrr(
[ in ] HCLUSTER_RPC hCluster,
[ in ] boolean8 fExcludeSelf,
[ in ] uint32 inSize,
[ in, unique, size_is(inSize) ] uint8 *pInData,
[ out, ref, size_is(1, 1) ] CLUSTER_MRR_RESPONSE **ppInfo,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x8F */
- error_status_t
+ WERROR
clusapi_CreateGroupEnum(
[ in ] HCLUSTER_RPC hCluster,
[ in, unique, size_is(cbProperties)] uint8* pProperties,
[ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
[ in ] uint32 cbRoProperties,
[ out ] GROUP_ENUM_LIST **ppResultList,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x90 */
- error_status_t
+ WERROR
clusapi_CreateResourceEnum(
[ in ] HCLUSTER_RPC hCluster,
[ in, unique, size_is(cbProperties)] uint8* pProperties,
[ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
[ in ] uint32 cbRoProperties,
[ out ] RESOURCE_ENUM_LIST **ppResultList,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x91 */
- error_status_t
+ WERROR
clusapi_ExecuteReadBatch(
[ in ] HKEY_RPC hKey,
[ in ] uint32 cbInData,
[ in, size_is(cbInData)] uint8 *lpInData,
[ out ] uint32 *cbOutData,
[ out, size_is(,*cbOutData) ] uint8 ** lpOutData,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
/*****************/
/* Function 0x92 */
- error_status_t
+ WERROR
clusapi_RestartResource(
[ in ] HRES_RPC hResource,
[ in ] uint32 dwFlags,
- [ out ] error_status_t *rpc_status
+ [ out ] WERROR *rpc_status
);
typedef struct {
/*****************/
/* Function 0x93 */
- error_status_t
+ WERROR
clusapi_GetNotifyAsync(
[ in ] HNOTIFY_RPC hNotify,
[ out, size_is(,*dwNumNotifications) ] NOTIFICATION_DATA_ASYNC_RPC **Notifications,
CLUSPROP_FORMAT_FILETIME = 0x000c
} CLUSTER_PROPERTY_FORMAT;
- typedef enum {
- CLUSPROP_SYNTAX_ENDMARK = 0x00000000,
- CLUSPROP_SYNTAX_NAME = 0x00040003,
- CLUSPROP_SYNTAX_RESCLASS = 0x00020002,
- CLUSPROP_SYNTAX_LIST_VALUE_SZ = 0x00010003,
- CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = 0x00010004,
- CLUSPROP_SYNTAX_LIST_VALUE_DWORD = 0x00010002,
- CLUSPROP_SYNTAX_LIST_VALUE_BINARY = 0x00010001,
- CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = 0x00010005,
- CLUSPROP_SYNTAX_LIST_VALUE_LONG = 0x00010007,
- CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = 0x00010008,
- CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = 0x00010009,
- CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = 0x0001000a,
- CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = 0x00010006,
- CLUSPROP_SYNTAX_LIST_VALUE_WORD = 0x0001000b,
- CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = 0x0001000c,
- CLUSPROP_SYNTAX_DISK_SIGNATURE = 0x00050002,
- CLUSPROP_SYNTAX_SCSI_ADDRESS = 0x00060002,
- CLUSPROP_SYNTAX_DISK_NUMBER = 0x00070002,
- CLUSPROP_SYNTAX_PARTITION_INFO = 0x00080001,
- CLUSPROP_SYNTAX_DISK_SERIALNUMBER = 0x000a0003,
- CLUSPROP_SYNTAX_DISK_GUID = 0x000b0003,
- CLUSPROP_SYNTAX_DISK_SIZE = 0x000c0006,
- CLUSPROP_SYNTAX_PARTITION_INFO_EX = 0x000d0001
- } CLUSTER_PROPERTY_SYNTAX;
-
typedef enum {
CLUS_CHAR_UNKNOWN = 0x00000000,
CLUS_CHAR_QUORUM = 0x00000001,
DiskIdUnKnown = 0x00001388
} CLUSDSK_DISKID_ENUM;
#endif
+
+ /*****************/
+ /* Function 0x94 */
+
+ WERROR
+ Opnum148NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x95 */
+
+ WERROR
+ Opnum149otUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x96 */
+
+ WERROR
+ Opnum150NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x97 */
+
+ WERROR
+ Opnum151NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x98 */
+
+ WERROR
+ Opnum152NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x99 */
+
+ WERROR
+ Opnum153NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x9A */
+
+ WERROR
+ Opnum154NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x9B */
+
+ WERROR
+ clusapi_AddNotifyResourceTypeV2(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] hyper filter,
+ [ in ] uint32 dwNotifyKey,
+ [ in, string ] [charset(UTF16)] uint16 *resTypeName,
+ [ in ] uint32 dwVersion,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x9C */
+
+ WERROR
+ Opnum156NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x9D */
+
+ WERROR
+ clusapi_ExecuteReadBatchEx(
+ [in] HKEY_RPC hKey,
+ [in] uint32 cbInData,
+ [in, size_is(cbInData)] uint8* lpInData,
+ [in] uint32 flags,
+ [out] uint32* cbOutData,
+ [out, size_is(,*cbOutData)] uint8** lpOutData,
+ [out] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x9E */
+
+ WERROR
+ Opnum158NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x9F */
+
+ WERROR
+ Opnum159NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xA0 */
+
+ WERROR
+ Opnum160NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xA1 */
+
+ WERROR
+ Opnum161NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xA2 */
+
+ WERROR
+ Opnum162NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xA3 */
+
+#define HGROUPSET_RPC policy_handle
+#if 0
+ typedef [context_handle] void *HGROUPSET_RPC;
+#endif
+#if 0
+ HGROUPSET_RPC
+ clusapi_CreateGroupSet (
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_CreateGroupSet (
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HGROUPSET_RPC *hGroupSet
+ );
+#endif
+
+ /*****************/
+ /* Function 0xA4 */
+#if 0
+ HGROUPSET_RPC
+ clusapi_OpenGroupSet(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenGroupSet(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HGROUPSET_RPC *hGroupSet
+ );
+#endif
+
+ /*****************/
+ /* Function 0xA5 */
+
+ WERROR
+ clusapi_CloseGroupSet(
+ [ in, out ] HGROUPSET_RPC *GroupSet
+ );
+
+ /*****************/
+ /* Function 0xA6 */
+
+ WERROR
+ clusapi_DeleteGroupSet(
+ [ in ] HGROUPSET_RPC GroupSet,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xA7 */
+
+ WERROR
+ clusapi_AddGroupToGroupSet(
+ [ in ] HGROUPSET_RPC GroupSet,
+ [ in ] HGROUP_RPC Group,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xA8 */
+
+ WERROR
+ clusapi_RemoveGroupFromGroupSet(
+ [ in ] HGROUP_RPC Group,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xA9 */
+
+ WERROR
+ clusapi_MoveGroupToGroupSet(
+ [ in ] HGROUPSET_RPC GroupSet,
+ [ in ] HGROUP_RPC Group,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAA */
+
+ WERROR
+ Opnum170NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xAB */
+
+ WERROR
+ clusapi_AddGroupSetDependency(
+ [ in ] HGROUPSET_RPC DependentGroupSet,
+ [ in ] HGROUPSET_RPC ProviderGroupSet,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAC */
+
+ WERROR
+ clusapi_AddGroupToGroupSetDependency(
+ [ in ] HGROUP_RPC DependentGroup,
+ [ in ] HGROUPSET_RPC ProviderGroupSet,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAD */
+
+ typedef [v1_enum] enum {
+ CLUSCTL_GROUPSET_GET_ID = 0x08000039,
+ CLUSCTL_GROUPSET_GET_RO_COMMON_PROPERTIES = 0x08000055,
+ CLUSCTL_GROUPSET_GET_COMMON_PROPERTIES = 0x08000059,
+ CLUSCTL_GROUPSET_GET_GROUPS = 0x08002D71,
+ CLUSCTL_GROUPSET_GET_PROVIDER_GROUPS = 0x08002D75,
+ CLUSCTL_GROUPSET_GET_PROVIDER_GROUPSETS = 0x08002D79,
+ CLUSCTL_GROUPSET_SET_COMMON_PROPERTIES = 0x0840005E
+ } clusapi_GroupSetControlCode;
+
+ WERROR
+ clusapi_NodeGroupSetControl(
+ [ in ] HGROUPSET_RPC hGroupSet,
+ [ in ] HNODE_RPC hNode,
+ [ in ] clusapi_GroupSetControlCode dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize), length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in, range(0, MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE)] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAE */
+
+ WERROR
+ clusapi_GroupSetControl(
+ [ in ] HGROUPSET_RPC hGroupSet,
+ [ in ] clusapi_GroupSetControlCode dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize), length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in, range(0, 0x7FFFFFFF)] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAF */
+
+ WERROR
+ clusapi_SetGroupDependencyExpression(
+ [ in ] HGROUP_RPC hGroup,
+ [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB0 */
+
+ WERROR
+ clusapi_RemoveClusterGroupDependency(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] HGROUP_RPC hDependsOn,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB1 */
+
+ WERROR
+ clusapi_SetGroupSetDependencyExpression(
+ [ in ] HGROUPSET_RPC hGroupSet,
+ [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB2 */
+
+ WERROR
+ clusapi_RemoveGroupSetDependency(
+ [ in ] HGROUPSET_RPC hGroupSet,
+ [ in ] HGROUPSET_RPC hDependsOn,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB3 */
+
+ WERROR
+ clusapi_RemoveClusterGroupToGroupSetDependency(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] HGROUPSET_RPC hDependsOn,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB4 */
+
+ WERROR
+ clusapi_CreateGroupSetEnum(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ out ] ENUM_LIST **ReturnEnum,
+ [ out ] WERROR * rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB5 */
+
+ WERROR
+ clusapi_CreateNetInterfaceEnum(
+ [in] HCLUSTER_RPC hCluster,
+ [in, string] [charset(UTF16)] uint16 *lpszNodeName,
+ [in, string] [charset(UTF16)] uint16 *lpszNetworkName,
+ [out] ENUM_LIST **ReturnEnum,
+ [out] WERROR * rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB6 */
+
+ WERROR
+ clusapi_ChangeCsvStateEx(
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwState,
+ [ in, string ] [charset(UTF16)] uint16 *lpszVolumeName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB7 */
+
+ WERROR
+ clusapi_AddGroupToGroupSetEx(
+ [ in ] HGROUPSET_RPC GroupSet,
+ [ in ] HGROUP_RPC Group,
+ [ in ] uint32 FaultDomain,
+ [ in ] uint32 UpdateDomain,
+ [ in ] boolean8 UseDomains,
+ [ in ] uint32 *Reserved,
+ [ out ] WERROR *rpc_status
+ );
}