📄 clusapi.h
字号:
DWORD rgdwMaximumComponentLength;
DWORD dwFileSystemFlags;
WCHAR szFileSystem[32];
} CLUS_PARTITION_INFO, *PCLUS_PARTITION_INFO;
// Disk partition information property value.
#pragma warning( disable : 4201 ) // nonstandard extension used : nameless struct/union
#ifdef __cplusplus
typedef struct CLUSPROP_PARTITION_INFO
: public CLUSPROP_VALUE
, public CLUS_PARTITION_INFO {
#else
typedef struct CLUSPROP_PARTITION_INFO {
CLUSPROP_VALUE;
CLUS_PARTITION_INFO;
#endif
} CLUSPROP_PARTITION_INFO, *PCLUSPROP_PARTITION_INFO;
#pragma warning( default : 4201 )
//
// FT set information.
//
typedef struct CLUS_FTSET_INFO {
DWORD dwRootSignature;
DWORD dwFtType;
} CLUS_FTSET_INFO, *PCLUS_FTSET_INFO;
// Disk partition information property value.
#pragma warning( disable : 4201 ) // nonstandard extension used : nameless struct/union
#ifdef __cplusplus
typedef struct CLUSPROP_FTSET_INFO
: public CLUSPROP_VALUE
, public CLUS_FTSET_INFO {
#else
typedef struct CLUSPROP_FTSET_INFO {
CLUSPROP_VALUE;
CLUS_FTSET_INFO;
#endif
} CLUSPROP_FTSET_INFO, *PCLUSPROP_FTSET_INFO;
#pragma warning( default : 4201 )
// Disk Signature property value.
typedef CLUSPROP_DWORD CLUSPROP_DISK_SIGNATURE, *PCLUSPROP_DISK_SIGNATURE;
// SCSI Address.
#pragma warning( disable : 4201 ) // nonstandard extension used : nameless struct/union
typedef struct CLUS_SCSI_ADDRESS {
union {
struct {
UCHAR PortNumber;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
};
DWORD dw;
};
} CLUS_SCSI_ADDRESS, *PCLUS_SCSI_ADDRESS;
#pragma warning( default : 4201 ) // nonstandard extension used : nameless struct/union
// SCSI Address property value.
#pragma warning( disable : 4201 ) // nonstandard extension used : nameless struct/union
#ifdef __cplusplus
typedef struct CLUSPROP_SCSI_ADDRESS
: public CLUSPROP_VALUE
, public CLUS_SCSI_ADDRESS {
#else
typedef struct CLUSPROP_SCSI_ADDRESS {
CLUSPROP_VALUE;
CLUS_SCSI_ADDRESS;
#endif
} CLUSPROP_SCSI_ADDRESS, *PCLUSPROP_SCSI_ADDRESS;
#pragma warning( default : 4201 ) // nonstandard extension used : nameless struct/union
// Beginning of a property list.
typedef struct CLUSPROP_LIST {
DWORD nPropertyCount;
CLUSPROP_PROPERTY_NAME PropertyName;
} CLUSPROP_LIST, *PCLUSPROP_LIST;
// Helper for building or parsing a property list buffer.
typedef union CLUSPROP_BUFFER_HELPER {
BYTE * pb;
WORD * pw;
DWORD * pdw;
LPWSTR psz;
PCLUSPROP_LIST pList;
PCLUSPROP_SYNTAX pSyntax;
PCLUSPROP_PROPERTY_NAME pName;
PCLUSPROP_VALUE pValue;
PCLUSPROP_BINARY pBinaryValue;
PCLUSPROP_DWORD pDwordValue;
PCLUSPROP_ULARGE_INTEGER pULargeIntegerValue;
PCLUSPROP_SZ pStringValue;
PCLUSPROP_MULTI_SZ pMultiSzValue;
PCLUSPROP_RESOURCE_CLASS pResourceClassValue;
PCLUSPROP_RESOURCE_CLASS_INFO pResourceClassInfoValue;
PCLUSPROP_DISK_SIGNATURE pDiskSignatureValue;
PCLUSPROP_SCSI_ADDRESS pScsiAddressValue;
PCLUSPROP_DISK_NUMBER pDiskNumberValue;
PCLUSPROP_PARTITION_INFO pPartitionInfoValue;
PCLUSPROP_REQUIRED_DEPENDENCY pRequiredDependencyValue;
} CLUSPROP_BUFFER_HELPER, *PCLUSPROP_BUFFER_HELPER;
#endif // MIDL_PASS
#endif // _CLUSTER_API_TYPES_
// Macro for aligning CLUSPROP buffers on a DWORD boundary.
#define ALIGN_CLUSPROP( count ) ((count + 3) & ~3)
// Macros for declaring array format values
#define CLUSPROP_BINARY_DECLARE( name, cb ) \
struct { \
CLUSPROP_SYNTAX Syntax; \
DWORD cbLength; \
BYTE rgb[(cb + 3) & ~3]; \
} name
#define CLUSPROP_SZ_DECLARE( name, cch ) \
struct { \
CLUSPROP_SYNTAX Syntax; \
DWORD cbLength; \
WCHAR sz[(cch + 1) & ~1]; \
} name
#define CLUSPROP_PROPERTY_NAME_DECLARE( name, cch ) CLUSPROP_SZ_DECLARE( name, cch )
//
// Cluster resource property enumeration.
//
#ifndef _CLUSTER_API_TYPES_
//
// Define enumerable types
//
typedef enum CLUSTER_RESOURCE_ENUM {
CLUSTER_RESOURCE_ENUM_DEPENDS = 0x00000001,
CLUSTER_RESOURCE_ENUM_PROVIDES = 0x00000002,
CLUSTER_RESOURCE_ENUM_NODES = 0x00000004,
CLUSTER_RESOURCE_ENUM_ALL = (CLUSTER_RESOURCE_ENUM_DEPENDS |
CLUSTER_RESOURCE_ENUM_PROVIDES |
CLUSTER_RESOURCE_ENUM_NODES)
} CLUSTER_RESOURCE_ENUM;
#endif // _CLUSTER_API_TYPES_
#ifndef MIDL_PASS
HRESENUM
WINAPI
ClusterResourceOpenEnum(
IN HRESOURCE hResource,
IN DWORD dwType
);
DWORD
WINAPI
ClusterResourceEnum(
IN HRESENUM hResEnum,
IN DWORD dwIndex,
OUT LPDWORD lpdwType,
OUT LPWSTR lpszName,
IN OUT LPDWORD lpcbName
);
DWORD
WINAPI
ClusterResourceCloseEnum(
IN HRESENUM hResEnum
);
DWORD
WINAPI
CreateClusterResourceType(
IN HCLUSTER hCluster,
IN LPCWSTR lpszResourceTypeName,
IN LPCWSTR lpszDisplayName,
IN LPCWSTR lpszResourceTypeDll,
IN DWORD dwLooksAlivePollInterval,
IN DWORD dwIsAlivePollInterval
);
DWORD
WINAPI
DeleteClusterResourceType(
IN HCLUSTER hCluster,
IN LPCWSTR lpszResourceTypeName
);
#endif // MIDL_PASS
//
// Network-related structures and types.
//
#ifndef _CLUSTER_API_TYPES_
//
// Define enumerable group types
//
typedef enum CLUSTER_NETWORK_ENUM {
CLUSTER_NETWORK_ENUM_NETINTERFACES = 0x00000001,
CLUSTER_NETWORK_ENUM_ALL = CLUSTER_NETWORK_ENUM_NETINTERFACES
} CLUSTER_NETWORK_ENUM;
typedef enum CLUSTER_NETWORK_STATE {
ClusterNetworkStateUnknown = -1,
ClusterNetworkUnavailable,
ClusterNetworkDown,
ClusterNetworkPartitioned,
ClusterNetworkUp
} CLUSTER_NETWORK_STATE;
// Role the network plays in the cluster. This is a bitmask.
typedef enum CLUSTER_NETWORK_ROLE {
ClusterNetworkRoleNone = 0,
ClusterNetworkRoleInternalUse = 0x00000001,
ClusterNetworkRoleClientAccess = 0x00000002,
ClusterNetworkRoleInternalAndClient = 0x00000003
} CLUSTER_NETWORK_ROLE;
#endif // _CLUSTER_API_TYPES_
//
// Interfaces for managing the networks of a cluster.
//
#ifndef MIDL_PASS
HNETWORK
WINAPI
OpenClusterNetwork(
IN HCLUSTER hCluster,
IN LPCWSTR lpszNetworkName
);
BOOL
WINAPI
CloseClusterNetwork(
IN HNETWORK hNetwork
);
HNETWORKENUM
WINAPI
ClusterNetworkOpenEnum(
IN HNETWORK hNetwork,
IN DWORD dwType
);
DWORD
WINAPI
ClusterNetworkEnum(
IN HNETWORKENUM hNetworkEnum,
IN DWORD dwIndex,
OUT LPDWORD lpdwType,
OUT LPWSTR lpszName,
IN OUT LPDWORD lpcbName
);
DWORD
WINAPI
ClusterNetworkCloseEnum(
IN HNETWORKENUM hNetworkEnum
);
CLUSTER_NETWORK_STATE
WINAPI
GetClusterNetworkState(
IN HNETWORK hNetwork
);
DWORD
WINAPI
SetClusterNetworkName(
IN HNETWORK hNetwork,
IN LPCWSTR lpszName
);
DWORD
WINAPI
GetClusterNetworkId(
IN HNETWORK hNetwork,
OUT LPWSTR lpszNetworkId,
IN OUT LPDWORD lpcchNetworkId
);
DWORD
WINAPI
ClusterNetworkControl(
IN HNETWORK hNetwork,
IN OPTIONAL HNODE hHostNode,
IN DWORD dwControlCode,
IN LPVOID lpInBuffer,
IN DWORD cbInBufferSize,
OUT LPVOID lpOutBuffer,
IN DWORD cbOutBufferSize,
OUT LPDWORD lpcbBytesReturned
);
#endif // MIDL_PASS
#ifndef _CLUSTER_API_TYPES_
//
// Network interface-related structures and types.
//
typedef enum CLUSTER_NETINTERFACE_STATE {
ClusterNetInterfaceStateUnknown = -1,
ClusterNetInterfaceUnavailable,
ClusterNetInterfaceFailed,
ClusterNetInterfaceUnreachable,
ClusterNetInterfaceUp
} CLUSTER_NETINTERFACE_STATE;
#endif // _CLUSTER_API_TYPES_
//
// Interfaces for managing the network interfaces of a cluster.
//
#ifndef MIDL_PASS
HNETINTERFACE
WINAPI
OpenClusterNetInterface(
IN HCLUSTER hCluster,
IN LPCWSTR lpszInterfaceName
);
DWORD
WINAPI
GetClusterNetInterface(
IN HCLUSTER hCluster,
IN LPCWSTR lpszNodeName,
IN LPCWSTR lpszNetworkName,
OUT LPWSTR lpszInterfaceName,
IN OUT LPDWORD lpcbInterfaceName
);
BOOL
WINAPI
CloseClusterNetInterface(
IN HNETINTERFACE hNetInterface
);
CLUSTER_NETINTERFACE_STATE
WINAPI
GetClusterNetInterfaceState(
IN HNETINTERFACE hNetInterface
);
DWORD
WINAPI
ClusterNetInterfaceControl(
IN HNETINTERFACE hNetInterface,
IN OPTIONAL HNODE hHostNode,
IN DWORD dwControlCode,
IN LPVOID lpInBuffer,
IN DWORD cbInBufferSize,
OUT LPVOID lpOutBuffer,
IN DWORD cbOutBufferSize,
OUT LPDWORD lpcbBytesReturned
);
#endif // MIDL_PASS
//
// Cluster registry update and access routines
//
#ifndef MIDL_PASS
HKEY
WINAPI
GetClusterKey(
IN HCLUSTER hCluster,
IN REGSAM samDesired
);
HKEY
WINAPI
GetClusterGroupKey(
IN HGROUP hGroup,
IN REGSAM samDesired
);
HKEY
WINAPI
GetClusterResourceKey(
IN HRESOURCE hResource,
IN REGSAM samDesired
);
HKEY
WINAPI
GetClusterNodeKey(
IN HNODE hNode,
IN REGSAM samDesired
);
HKEY
WINAPI
GetClusterNetworkKey(
IN HNETWORK hNetwork,
IN REGSAM samDesired
);
HKEY
WINAPI
GetClusterNetInterfaceKey(
IN HNETINTERFACE hNetInterface,
IN REGSAM samDesired
);
LONG
WINAPI
ClusterRegCreateKey(
IN HKEY hKey,
IN LPCWSTR lpszSubKey,
IN DWORD dwOptions,
IN REGSAM samDesired,
IN LPSECURITY_ATTRIBUTES lpSecurityAttributes,
OUT PHKEY phkResult,
OUT OPTIONAL LPDWORD lpdwDisposition
);
LONG
WINAPI
ClusterRegOpenKey(
IN HKEY hKey,
IN LPCWSTR lpszSubKey,
IN REGSAM samDesired,
OUT PHKEY phkResult
);
LONG
WINAPI
ClusterRegDeleteKey(
IN HKEY hKey,
IN LPCWSTR lpszSubKey
);
LONG
WINAPI
ClusterRegCloseKey(
IN HKEY hKey
);
LONG
WINAPI
ClusterRegEnumKey(
IN HKEY hKey,
IN DWORD dwIndex,
OUT LPWSTR lpszName,
IN OUT LPDWORD lpcbName,
OUT PFILETIME lpftLastWriteTime
);
DWORD
WINAPI
ClusterRegSetValue(
IN HKEY hKey,
IN LPCWSTR lpszValueName,
IN DWORD dwType,
IN CONST BYTE* lpData,
IN DWORD cbData
);
DWORD
WINAPI
ClusterRegDeleteValue(
IN HKEY hKey,
IN LPCWSTR lpszValueName
);
LONG
WINAPI
ClusterRegQueryValue(
IN HKEY hKey,
IN LPCWSTR lpszValueName,
OUT LPDWORD lpValueType,
OUT LPBYTE lpData,
IN OUT LPDWORD lpcbData
);
DWORD
WINAPI
ClusterRegEnumValue(
IN HKEY hKey,
IN DWORD dwIndex,
OUT LPWSTR lpszValueName,
IN OUT LPDWORD lpcbValueName,
OUT LPDWORD lpType,
OUT LPBYTE lpData,
IN OUT LPDWORD lpcbData
);
LONG
WINAPI
ClusterRegQueryInfoKey(
IN HKEY hKey,
IN LPDWORD lpcSubKeys,
IN LPDWORD lpcbMaxSubKeyLen,
IN LPDWORD lpcValues,
IN LPDWORD lpcbMaxValueNameLen,
IN LPDWORD lpcbMaxValueLen,
IN LPDWORD lpcbSecurityDescriptor,
IN PFILETIME lpftLastWriteTime
);
LONG
WINAPI
ClusterRegGetKeySecurity (
IN HKEY hKey,
IN SECURITY_INFORMATION RequestedInformation,
OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
IN LPDWORD lpcbSecurityDescriptor
);
LONG
WINAPI
ClusterRegSetKeySecurity(
IN HKEY hKey,
IN SECURITY_INFORMATION SecurityInformation,
IN PSECURITY_DESCRIPTOR pSecurityDescriptor
);
#endif // MIDL_PASS
#ifdef __cplusplus
}
#endif
#ifndef _CLUSTER_API_TYPES_
#define _CLUSTER_API_TYPES_
#endif // _CLUSTER_API_TYPES_
#endif // _CLUSTER_API_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -