You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
986 lines
23 KiB
986 lines
23 KiB
/*++
|
|
|
|
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
|
|
);
|
|
|
|
}
|
|
|