|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
api_rpc.idl
Abstract:
Interface Description for Cluster API RPC interface
Author:
John Vert (jvert) 11-Jan-1996
--*/
// // Interface Attributes // [ uuid(b97db8b2-4c63-11cf-bff6-08002be23f2f), version(2.0) ] interface clusapi {
import "wtypes.idl";
// // Types // typedef [context_handle] void *HCLUSTER_RPC; typedef [context_handle] void *HNOTIFY_RPC; typedef [context_handle] void *HNODE_RPC; typedef [context_handle] void *HGROUP_RPC; typedef [context_handle] void *HNETWORK_RPC; typedef [context_handle] void *HNETINTERFACE_RPC; typedef [context_handle] void *HRES_RPC; typedef [context_handle] void *HKEY_RPC;
// // RPCable security structures (see winbase.h). //
typedef struct _RPC_SECURITY_DESCRIPTOR { [ size_is( cbInSecurityDescriptor ), length_is( cbOutSecurityDescriptor ) ] UCHAR *lpSecurityDescriptor; DWORD cbInSecurityDescriptor; DWORD cbOutSecurityDescriptor; } RPC_SECURITY_DESCRIPTOR, *PRPC_SECURITY_DESCRIPTOR;
typedef struct _RPC_SECURITY_ATTRIBUTES { DWORD nLength; RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor; BOOL bInheritHandle; } RPC_SECURITY_ATTRIBUTES, *PRPC_SECURITY_ATTRIBUTES;
typedef struct _CLUSTER_OPERATIONAL_VERSION_INFO { DWORD dwSize; DWORD dwClusterHighestVersion; DWORD dwClusterLowestVersion; DWORD dwFlags; DWORD dwReserved; }CLUSTER_OPERATIONAL_VERSION_INFO, *PCLUSTER_OPERATIONAL_VERSION_INFO;
// // Routines and structures for dealing with the cluster // HCLUSTER_RPC ApiOpenCluster( [ out ] error_status_t *Status );
error_status_t ApiCloseCluster( [ in, out ] HCLUSTER_RPC *Cluster );
error_status_t ApiSetClusterName( [ in ] LPCWSTR NewClusterName );
error_status_t ApiGetClusterName( [ out ] LPWSTR *ClusterName, [ out ] 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 ] LPCWSTR lpszDeviceName, [ in ] DWORD dwMaxQuorumLogSize );
// // Enumeration interface //
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 );
// // Resource interface //
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 ] DWORD dwLooksAlive, [ in ] DWORD dwIsAlive );
error_status_t ApiDeleteResourceType( [ in, string ] LPCWSTR lpszTypeName );
// // Registry interfaces // HKEY_RPC ApiGetRootKey( [ in ] DWORD samDesired, [ out ] error_status_t *Status );
HKEY_RPC ApiCreateKey( [ in ] HKEY_RPC hKey, [ in, string ] LPCWSTR lpSubKey, [ in ] DWORD dwOptions, [ in ] DWORD samDesired, [ in, unique ] PRPC_SECURITY_ATTRIBUTES lpSecurityAttributes, [ out ] LPDWORD lpdwDisposition, [ out ] error_status_t *Status );
HKEY_RPC ApiOpenKey( [ in ] HKEY_RPC hKey, [ in, string ] LPCWSTR lpSubKey, [ in ] DWORD samDesired, [ out ] error_status_t *Status );
error_status_t ApiEnumKey( [ in ] HKEY_RPC hKey, [ in ] DWORD dwIndex, [ out, string ] LPWSTR *KeyName, [ out ] FILETIME *lpftLastWriteTime );
error_status_t ApiSetValue( [ in ] HKEY_RPC hKey, [ in, string ] LPCWSTR lpValueName, [ in ] DWORD dwType, [ in, size_is(cbData) ] const UCHAR *lpData, [ in ] DWORD cbData );
error_status_t ApiDeleteValue( [ in ] HKEY_RPC hKey, [ in, string ] LPCWSTR lpValueName );
error_status_t ApiQueryValue( [ in ] HKEY_RPC hKey, [ in, string ] LPCWSTR lpValueName, [ out ] DWORD *lpValueType, [ out, size_is(cbData) ] UCHAR *lpData, [ in ] DWORD cbData, [ out ] LPDWORD lpcbRequired );
error_status_t ApiDeleteKey( [ in ] HKEY_RPC hKey, [ in, string ] LPCWSTR lpSubKey );
error_status_t ApiEnumValue( [ in ] HKEY_RPC hKey, [ in ] DWORD dwIndex, [ out, string ] LPWSTR *lpValueName, [ out ] LPDWORD lpType, [ out, size_is(*lpcbData) ] UCHAR *lpData, [ in, out ] LPDWORD lpcbData, [ out ] LPDWORD 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 );
// // Group interface //
HGROUP_RPC ApiOpenGroup( [ in, string ] LPCWSTR 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 ] DWORD *State, [ out, string ] LPWSTR *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 ] DWORD dwType, [ out ] PENUM_LIST *ReturnEnum );
error_status_t ApiSetGroupNodeList( [ in ] HGROUP_RPC hGroup, [ in, unique, size_is(cbListSize) ] UCHAR *lpNodeList, [ in ] DWORD cbListSize );
// // Notify interface //
HNOTIFY_RPC ApiCreateNotify( [ out ] error_status_t *rpc_error );
error_status_t ApiCloseNotify( [ in, out ] HNOTIFY_RPC *Notify );
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 Filter, [ 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 ] LPCWSTR lpszNodeName, [ out ] error_status_t *Status );
error_status_t ApiCloseNode( [ in, out ] HNODE_RPC *Node );
error_status_t ApiGetNodeState( [ in ] HNODE_RPC hNode, [ out ] DWORD *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 );
// // Resource/ResourceType IOCTL interface // 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 ] 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 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 );
// // Group IOCTL interface // 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 );
// // Node IOCTL interface // 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 );
//For eventlogging..this is only published in the idl interface for the eventlog //service. clusapi.dll doesnt export this functionality //SS: add a range to prevent DOS attacks - batching in eventlog service restricts this to 256K so 512K should be a safe limit for now error_status_t ApiEvPropEvents( [in, range(0, (512 * 1024))] DWORD dwEventInfoSize, [in , size_is(dwEventInfoSize)] UCHAR *pPackedEventInfo );
// // Network interfaces //
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, size_is(NetworkCount) ] LPWSTR NetworkIdList[*] );
// // Network IOCTL interface // 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 );
// // NetInterface interfaces //
HNETWORK_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 );
// // NetInterface IOCTL interface // 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 );
//added for nt 5 //added for providing more complete cluster version error_status_t ApiGetClusterVersion2( [ out ] WORD *lpwMajorVersion, [ out ] WORD *lpwMinorVersion, [ out ] WORD *lpwBuildNumber, [ out, string ] LPWSTR *lpszVendorId, [ out, string ] LPWSTR *lpszCSDVersion, [ out ] PCLUSTER_OPERATIONAL_VERSION_INFO *ppClusterOpVerInfo );
// Added for enumerating nodes that supports a certain resource type error_status_t ApiCreateResTypeEnum( [ in, string ] LPCWSTR lpszTypeName, [ in ] DWORD dwType, [ out ] PENUM_LIST *ReturnEnum );
// Added for backing up the quorum log and checkpoint file to the specified directory error_status_t ApiBackupClusterDatabase( [ in, string ] LPCWSTR lpszPathName );
// // Cluster ioctls // 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 );
// // Added for unblocking the get notify thread without freeing the context handles // error_status_t ApiUnblockGetNotifyCall( [ in ] HNOTIFY_RPC hNotify );
// // Added to enable change of the cluster service account password // // Structures IDL_CLUSTER_SET_PASSWORD_STATUS and IDL_CLUSTER_SET_PASSWORD_FLAGS // are also defined in clusapi.h. The duplication is necessary since the two // header files are completely independent. But the definitions of the two // data structures must remain in sync. 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 );
}
|