import "ms-dtyp.idl";
[
uuid(b97db8b2-4c63-11cf-bff6-08002be23f2f),
version(2.0)
]
interface clusapi
{
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 struct _RPC_SECURITY_DESCRIPTOR {
[ size_is( cbInSecurityDescriptor ),
length_is( cbOutSecurityDescriptor ) ]
unsigned char *lpSecurityDescriptor;
unsigned long cbInSecurityDescriptor;
unsigned long cbOutSecurityDescriptor;
} RPC_SECURITY_DESCRIPTOR, *PRPC_SECURITY_DESCRIPTOR;
typedef struct _RPC_SECURITY_ATTRIBUTES {
unsigned long nLength;
RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor;
long bInheritHandle;
} RPC_SECURITY_ATTRIBUTES, *PRPC_SECURITY_ATTRIBUTES;
typedef struct _CLUSTER_OPERATIONAL_VERSION_INFO {
unsigned long dwSize;
unsigned long dwClusterHighestVersion;
unsigned long dwClusterLowestVersion;
unsigned long dwFlags;
unsigned long dwReserved;
}CLUSTER_OPERATIONAL_VERSION_INFO,*PCLUSTER_OPERATIONAL_VERSION_INFO;
HCLUSTER_RPC
ApiOpenCluster(
[ out ] error_status_t *Status
);
error_status_t
ApiCloseCluster(
[ in, out ] HCLUSTER_RPC *Cluster
);
error_status_t
ApiSetClusterName(
[in, string] LPCWSTR NewClusterName
);
error_status_t
ApiGetClusterName(
[ out ] [ string ] LPWSTR *ClusterName,
[ out ] [ string ] LPWSTR *NodeName
);
error_status_t
ApiGetClusterVersion(
[out] WORD* lpwMajorVersion,
[out] WORD* lpwMinorVersion,
[out] WORD* lpwBuildNumber,
[out, string] LPWSTR* lpszVendorId,
[out, string] LPWSTR* lpszCSDVersion
);
error_status_t
ApiGetQuorumResource(
[ out, string ] LPWSTR *lpszResourceName,
[ out, string ] LPWSTR *lpszDeviceName,
[ out ] DWORD *pdwMaxQuorumLogSize
);
error_status_t
ApiSetQuorumResource(
[ in ] HRES_RPC hResource,
[ in, string ] LPCWSTR lpszDeviceName,
[ in ] DWORD dwMaxQuorumLogSize
);
typedef struct _ENUM_ENTRY {
DWORD Type;
[string] LPWSTR Name;
} ENUM_ENTRY, *PENUM_ENTRY;
typedef struct _ENUM_LIST {
DWORD EntryCount;
[size_is(EntryCount)] ENUM_ENTRY Entry[*];
} ENUM_LIST, *PENUM_LIST;
error_status_t
ApiCreateEnum(
[ in ] DWORD dwType,
[ out ] PENUM_LIST *ReturnEnum
);
HRES_RPC
ApiOpenResource(
[in, string] LPCWSTR lpszResourceName,
[out] error_status_t *Status
);
HRES_RPC
ApiCreateResource(
[in] HGROUP_RPC hGroup,
[in, string] LPCWSTR lpszResourceName,
[in, string] LPCWSTR lpszResourceType,
[in] DWORD dwFlags,
[out] error_status_t *Status
);
error_status_t
ApiDeleteResource(
[in] HRES_RPC hResource
);
error_status_t
ApiCloseResource(
[ in, out ] HRES_RPC *Resource
);
error_status_t
ApiGetResourceState(
[in] HRES_RPC hResource,
[out] DWORD *State,
[out, string] LPWSTR *NodeName,
[out, string] LPWSTR *GroupName
);
error_status_t
ApiSetResourceName(
[in] HRES_RPC hResource,
[in, string] LPCWSTR lpszResourceName
);
error_status_t
ApiGetResourceId(
[in] HRES_RPC hResource,
[out, string] LPWSTR* pGuid
);
error_status_t
ApiGetResourceType(
[ in ] HRES_RPC hResource,
[ out, string ] LPWSTR* lpszResourceType
);
error_status_t
ApiFailResource(
[in] HRES_RPC hResource
);
error_status_t
ApiOnlineResource(
[ in ] HRES_RPC hResource
);
error_status_t
ApiOfflineResource(
[ in ] HRES_RPC hResource
);
error_status_t
ApiAddResourceDependency(
[ in ] HRES_RPC hResource,
[ in ] HRES_RPC hDependsOn
);
error_status_t
ApiRemoveResourceDependency(
[ in ] HRES_RPC hResource,
[ in ] HRES_RPC hDependsOn
);
error_status_t
ApiCanResourceBeDependent(
[in] HRES_RPC hResource,
[in] HRES_RPC hResourceDependent
);
error_status_t
ApiCreateResEnum(
[ in ] HRES_RPC hResource,
[ in ] DWORD dwType,
[ out ] PENUM_LIST *ReturnEnum
);
error_status_t
ApiAddResourceNode(
[ in ] HRES_RPC hResource,
[ in ] HNODE_RPC hNode
);
error_status_t
ApiRemoveResourceNode(
[ in ] HRES_RPC hResource,
[ in ] HNODE_RPC hNode
);
error_status_t
ApiChangeResourceGroup(
[ in ] HRES_RPC hResource,
[ in ] HGROUP_RPC hGroup
);
error_status_t
ApiCreateResourceType(
[ in, string ] LPCWSTR lpszTypeName,
[ in, string ] LPCWSTR lpszDisplayName,
[ in, string ] LPCWSTR lpszDllName,
[ in ] unsigned long dwLooksAlive,
[ in ] unsigned long dwIsAlive
);
error_status_t
ApiDeleteResourceType(
[ in, string ] const wchar_t * lpszTypeName
);
HKEY_RPC
ApiGetRootKey(
[ in ] unsigned long samDesired,
[ out ] error_status_t *Status
);
HKEY_RPC
ApiCreateKey(
[ in ] HKEY_RPC hKey,
[ in, string ] const wchar_t * lpSubKey,
[ in ] unsigned long dwOptions,
[ in ] unsigned long samDesired,
[ in, unique ] PRPC_SECURITY_ATTRIBUTES lpSecurityAttributes,
[ out ] unsigned long * lpdwDisposition,
[ out ] error_status_t *Status
);
HKEY_RPC
ApiOpenKey(
[ in ] HKEY_RPC hKey,
[ in, string ] const wchar_t * lpSubKey,
[ in ] unsigned long samDesired,
[ out ] error_status_t *Status
);
error_status_t
ApiEnumKey(
[ in ] HKEY_RPC hKey,
[ in ] unsigned long dwIndex,
[ out, string ] wchar_t * *KeyName,
[ out ] FILETIME *lpftLastWriteTime
);
error_status_t
ApiSetValue(
[ in ] HKEY_RPC hKey,
[ in, string ] const wchar_t * lpValueName,
[ in ] unsigned long dwType,
[ in, size_is(cbData) ] const unsigned char *lpData,
[ in ] unsigned long cbData
);
error_status_t
ApiDeleteValue(
[ in ] HKEY_RPC hKey,
[ in, string ] const wchar_t * lpValueName
);
error_status_t
ApiQueryValue(
[ in ] HKEY_RPC hKey,
[ in, string ] const wchar_t * lpValueName,
[ out ] unsigned long *lpValueType,
[ out, size_is(cbData) ] unsigned char *lpData,
[ in ] unsigned long cbData,
[ out ] unsigned long * lpcbRequired
);
error_status_t
ApiDeleteKey(
[ in ] HKEY_RPC hKey,
[ in, string ] const wchar_t * lpSubKey
);
error_status_t
ApiEnumValue(
[ in ] HKEY_RPC hKey,
[ in ] unsigned long dwIndex,
[ out, string ] wchar_t * *lpValueName,
[ out ] unsigned long * lpType,
[ out, size_is(*lpcbData) ] unsigned char *lpData,
[ in, out ] unsigned long * lpcbData,
[ out ] unsigned long * TotalSize
);
error_status_t
ApiCloseKey(
[ in, out ] HKEY_RPC *pKey
);
error_status_t
ApiQueryInfoKey(
[ in ] HKEY_RPC hKey,
[ out ] LPDWORD lpcSubKeys,
[ out ] LPDWORD lpcbMaxSubKeyLen,
[ out ] LPDWORD lpcValues,
[ out ] LPDWORD lpcbMaxValueNameLen,
[ out ] LPDWORD lpcbMaxValueLen,
[ out ] LPDWORD lpcbSecurityDescriptor,
[ out ] PFILETIME lpftLastWriteTime
);
error_status_t
ApiSetKeySecurity(
[ in ] HKEY_RPC hKey,
[ in ] DWORD SecurityInformation,
[ in ] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptor
);
error_status_t
ApiGetKeySecurity(
[ in ] HKEY_RPC hKey,
[ in ] DWORD SecurityInformation,
[ in, out ] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptor
);
HGROUP_RPC
ApiOpenGroup(
[ in, string ] const wchar_t * lpszGroupName,
[ out ] error_status_t *Status
);
HGROUP_RPC
ApiCreateGroup(
[ in, string ] LPCWSTR lpszGroupName,
[ out ] error_status_t *Status
);
error_status_t
ApiDeleteGroup(
[ in ] HGROUP_RPC Group
);
error_status_t
ApiCloseGroup(
[ in, out ] HGROUP_RPC *Group
);
error_status_t
ApiGetGroupState(
[ in ] HGROUP_RPC hGroup,
[ out ] unsigned long *State,
[ out, string ] wchar_t * *NodeName
);
error_status_t
ApiSetGroupName(
[ in ] HGROUP_RPC hGroup,
[ in, string ] LPCWSTR lpszGroupName
);
error_status_t
ApiGetGroupId(
[ in ] HGROUP_RPC hGroup,
[ out, string ] LPWSTR *pGuid
);
error_status_t
ApiGetNodeId(
[ in ] HNODE_RPC hNode,
[ out, string ] LPWSTR *pGuid
);
error_status_t
ApiOnlineGroup(
[ in ] HGROUP_RPC hGroup
);
error_status_t
ApiOfflineGroup(
[ in ] HGROUP_RPC hGroup
);
error_status_t
ApiMoveGroup(
[ in ] HGROUP_RPC hGroup
);
error_status_t
ApiMoveGroupToNode(
[ in ] HGROUP_RPC hGroup,
[ in ] HNODE_RPC hNode
);
error_status_t
ApiCreateGroupResourceEnum(
[ in ] HGROUP_RPC hGroup,
[ in ] unsigned long dwType,
[ out ] PENUM_LIST *ReturnEnum
);
error_status_t
ApiSetGroupNodeList(
[ in ] HGROUP_RPC hGroup,
[ in, unique, size_is(cbListSize) ] UCHAR *lpNodeList,
[ in ] DWORD cbListSize
);
HNOTIFY_RPC
ApiCreateNotify(
[ out ] error_status_t *Status
);
error_status_t
ApiCloseNotify(
[ in, out ] HNOTIFY_RPC* hNotify
);
error_status_t
ApiAddNotifyCluster(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HCLUSTER_RPC hCluster,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey
);
error_status_t
ApiAddNotifyNode(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ out ] DWORD *dwStateSequence
);
error_status_t
ApiAddNotifyGroup(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HGROUP_RPC hGroup,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ out ] DWORD *dwStateSequence
);
error_status_t
ApiAddNotifyResource(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HRES_RPC hResource,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ out ] DWORD *dwStateSequence
);
error_status_t
ApiAddNotifyKey(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HKEY_RPC hKey,
[ in ] DWORD dwNotifyKey,
[ in ] DWORD dwFilter,
[ in ] BOOL WatchSubTree
);
error_status_t
ApiReAddNotifyNode(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ in ] DWORD StateSequence
);
error_status_t
ApiReAddNotifyGroup(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HGROUP_RPC hGroup,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ in ] DWORD StateSequence
);
error_status_t
ApiReAddNotifyResource(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HRES_RPC hResource,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ in ] DWORD StateSequence
);
error_status_t
ApiGetNotify(
[ in ] HNOTIFY_RPC hNotify,
[ in ] DWORD Timeout,
[ out ] DWORD *dwNotifyKey,
[ out ] DWORD *dwFilter,
[ out ] DWORD *dwStateSequence,
[ out, string ] LPWSTR *Name
);
HNODE_RPC
ApiOpenNode(
[ in, string ] const wchar_t * lpszNodeName,
[ out ] error_status_t *Status
);
error_status_t
ApiCloseNode(
[ in, out ] HNODE_RPC *Node
);
error_status_t
ApiGetNodeState(
[ in ] HNODE_RPC hNode,
[ out ] unsigned long *State
);
error_status_t
ApiPauseNode(
[ in ] HNODE_RPC hNode
);
error_status_t
ApiResumeNode(
[ in ] HNODE_RPC hNode
);
error_status_t
ApiEvictNode(
[ in ] HNODE_RPC hNode
);
error_status_t
ApiNodeResourceControl(
[ in ] HRES_RPC hResource,
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiResourceControl(
[ in ] HRES_RPC hResource,
[ in ] unsigned long dwControlCode,
[ in, unique, size_is(nInBufferSize) ] unsigned char *lpInBuffer,
[ in ] unsigned long nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] unsigned char *lpOutBuffer,
[ in ] unsigned long nOutBufferSize,
[ out ] unsigned long *lpBytesReturned,
[ out ] unsigned long *lpcbRequired
);
error_status_t
ApiNodeResourceTypeControl(
[ in ] HCLUSTER_RPC hCluster,
[ in, string ] LPCWSTR lpszResourceTypeName,
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiResourceTypeControl(
[ in ] HCLUSTER_RPC hCluster,
[ in, string ] LPCWSTR lpszResourceTypeName,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiNodeGroupControl(
[ in ] HGROUP_RPC hGroup,
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiGroupControl(
[ in ] HGROUP_RPC hGroup,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiNodeNodeControl(
[ in ] HNODE_RPC hNode,
[ in ] HNODE_RPC hHostNode,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiNodeControl(
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
Opnum80NotUsedOnWire(void);
HNETWORK_RPC
ApiOpenNetwork(
[ in, string ] LPCWSTR lpszNetworkName,
[ out ] error_status_t *Status
);
error_status_t
ApiCloseNetwork(
[ in, out ] HNETWORK_RPC *Network
);
error_status_t
ApiGetNetworkState(
[ in ] HNETWORK_RPC hNetwork,
[ out ] DWORD *State
);
error_status_t
ApiSetNetworkName(
[ in ] HNETWORK_RPC hNetwork,
[ in, string ] LPCWSTR lpszNetworkName
);
error_status_t
ApiCreateNetworkEnum(
[ in ] HNETWORK_RPC hNetwork,
[ in ] DWORD dwType,
[ out ] PENUM_LIST *ReturnEnum
);
error_status_t
ApiGetNetworkId(
[ in ] HNETWORK_RPC hNetwork,
[ out, string ] LPWSTR *pGuid
);
error_status_t
ApiSetNetworkPriorityOrder(
[ in, range(0, 1000)] DWORD NetworkCount,
[ in, string, size_is(NetworkCount) ] LPWSTR NetworkIdList[*]
);
error_status_t
ApiNodeNetworkControl(
[ in ] HNETWORK_RPC hNetwork,
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiNetworkControl(
[ in ] HNETWORK_RPC hNetwork,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiAddNotifyNetwork(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNETWORK_RPC hNetwork,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ out ] DWORD *dwStateSequence
);
error_status_t
ApiReAddNotifyNetwork(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNETWORK_RPC hNetwork,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ in ] DWORD StateSequence
);
HNETINTERFACE_RPC
ApiOpenNetInterface(
[ in, string ] LPCWSTR lpszNetInterfaceName,
[ out ] error_status_t *Status
);
error_status_t
ApiCloseNetInterface(
[ in, out ] HNETINTERFACE_RPC *NetInterface
);
error_status_t
ApiGetNetInterfaceState(
[ in ] HNETINTERFACE_RPC hNetInterface,
[ out ] DWORD *State
);
error_status_t
ApiGetNetInterface(
[ in, string ] LPCWSTR lpszNodeName,
[ in, string ] LPCWSTR lpszNetworkName,
[ out, string ] LPWSTR *lppszInterfaceName
);
error_status_t
ApiGetNetInterfaceId(
[ in ] HNETINTERFACE_RPC hNetInterface,
[ out, string ] LPWSTR *pGuid
);
error_status_t
ApiNodeNetInterfaceControl(
[ in ] HNETINTERFACE_RPC hNetInterface,
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiNetInterfaceControl(
[ in ] HNETINTERFACE_RPC hNetInterface,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiAddNotifyNetInterface(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNETINTERFACE_RPC hNetInterface,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ out ] DWORD *dwStateSequence
);
error_status_t
ApiReAddNotifyNetInterface(
[ in ] HNOTIFY_RPC hNotify,
[ in ] HNETINTERFACE_RPC hNetInterface,
[ in ] DWORD dwFilter,
[ in ] DWORD dwNotifyKey,
[ in ] DWORD StateSequence
);
error_status_t
ApiCreateNodeEnum(
[ in ] HNODE_RPC hNode,
[ in ] DWORD dwType,
[ out ] PENUM_LIST *ReturnEnum
);
error_status_t
ApiGetClusterVersion2(
[ out ] WORD* lpwMajorVersion,
[ out ] WORD* lpwMinorVersion,
[ out ] WORD* lpwBuildNumber,
[ out, string ] wchar_t * *lpszVendorId,
[ out, string ] wchar_t * *lpszCSDVersion,
[ out ] PCLUSTER_OPERATIONAL_VERSION_INFO *ppClusterOpVerInfo
);
error_status_t
ApiCreateResTypeEnum(
[ in, string ] LPCWSTR lpszTypeName,
[ in ] DWORD dwType,
[ out ] PENUM_LIST *ReturnEnum
);
error_status_t
ApiBackupClusterDatabase(
[ in, string ] LPCWSTR lpszPathName
);
error_status_t
ApiNodeClusterControl(
[ in ] HCLUSTER_RPC hCluster,
[ in ] HNODE_RPC hHostNode,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiClusterControl(
[ in ] HCLUSTER_RPC hCluster,
[ in ] DWORD dwControlCode,
[ in, unique, size_is(nInBufferSize) ] UCHAR *lpInBuffer,
[ in ] DWORD nInBufferSize,
[ out, size_is(nOutBufferSize),
length_is (*lpBytesReturned)] UCHAR *lpOutBuffer,
[ in ] DWORD nOutBufferSize,
[ out ] DWORD *lpBytesReturned,
[ out ] DWORD *lpcbRequired
);
error_status_t
ApiUnblockGetNotifyCall(
[ in ] HNOTIFY_RPC hNotify
);
typedef struct IDL_CLUSTER_SET_PASSWORD_STATUS {
DWORD NodeId;
BOOLEAN SetAttempted;
DWORD ReturnStatus;
} IDL_CLUSTER_SET_PASSWORD_STATUS, *PIDL_CLUSTER_SET_PASSWORD_STATUS;
typedef enum IDL_CLUSTER_SET_PASSWORD_FLAGS {
IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
} IDL_CLUSTER_SET_PASSWORD_FLAGS;
error_status_t
ApiSetServiceAccountPassword(
[ in, string ] LPWSTR lpszNewPassword,
[ in ] IDL_CLUSTER_SET_PASSWORD_FLAGS dwFlags,
[ out, size_is(ReturnStatusBufferSize),
length_is(*SizeReturned) ] IDL_CLUSTER_SET_PASSWORD_STATUS
ReturnStatusBufferPtr[*],
[ in ] DWORD ReturnStatusBufferSize,
[ out ] DWORD *SizeReturned,
[ out ] DWORD *ExpectedBufferSize
);
}