Headers diff for clusapi.dll between 6.0.6001.18000-Windows 6.0 and 6.1.7601.17514-Windows 7.0 versions



 clusapi.h (6.0.6001.18000-Windows 6.0)   clusapi.h (6.1.7601.17514-Windows 7.0) 
/*++ /*++
Copyright (c) Microsoft Corporation. All rights reserved. Copyright (c) 1996 Microsoft Corporation. All rights reserved.
Module Name: Module Name:
clusapi.h clusapi.h
Abstract: Abstract:
This module defines the common management and application interface to This module defines the common management and application interface to
the Microsoft Cluster Server services. the Microsoft Cluster Server services.
Revision History: Revision History:
--*/ --*/
#ifndef _CLUSTER_API_ #ifndef _CLUSTER_API_
#define _CLUSTER_API_ #define _CLUSTER_API_
#define CLUSAPI_VERSION 0x0600
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#define CLUSAPI_VERSION_SERVER2008 0x00000600
#define CLUSAPI_VERSION_SERVER2008R2 0x00000700
#if (!defined(CLUSAPI_VERSION))
#if (!defined(NTDDI_VERSION) || (NTDDI_VERSION >= NTDDI_WIN7))
#define CLUSAPI_VERSION CLUSAPI_VERSION_SERVER2008R2
#else
#define CLUSAPI_VERSION CLUSAPI_VERSION_SERVER2008
#endif
#endif // !defined(CLUSAPI_VERSION)
#define CREATE_CLUSTER_VERSION CLUSAPI_VERSION_SERVER2008
#define CREATE_CLUSTER_MAJOR_VERSION_MASK 0xFFFFFF00
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#if ( !MIDL_PASS && !__midl ) #if ( !MIDL_PASS && !__midl )
#if _MSC_VER >= 1200 #if _MSC_VER >= 1200
#pragma warning(push) #pragma warning(push)
#endif #endif
#pragma warning( disable : 4200 ) // nonstandard extension used : zero-sized arr ay in struct/union #pragma warning( disable : 4200 ) // nonstandard extension used : zero-sized arr ay in struct/union
#pragma warning( disable : 4201 ) // nonstandard extension used : nameless struc t/union #pragma warning( disable : 4201 ) // nonstandard extension used : nameless struc t/union
skipping to change at line 61 skipping to change at line 73
typedef struct _HNETWORK *HNETWORK; typedef struct _HNETWORK *HNETWORK;
typedef struct _HNETINTERFACE *HNETINTERFACE; typedef struct _HNETINTERFACE *HNETINTERFACE;
typedef struct _HCHANGE *HCHANGE; typedef struct _HCHANGE *HCHANGE;
typedef struct _HCLUSENUM *HCLUSENUM; typedef struct _HCLUSENUM *HCLUSENUM;
typedef struct _HGROUPENUM *HGROUPENUM; typedef struct _HGROUPENUM *HGROUPENUM;
typedef struct _HRESENUM *HRESENUM; typedef struct _HRESENUM *HRESENUM;
typedef struct _HNETWORKENUM *HNETWORKENUM; typedef struct _HNETWORKENUM *HNETWORKENUM;
typedef struct _HNODEENUM *HNODEENUM; typedef struct _HNODEENUM *HNODEENUM;
typedef struct _HRESTYPEENUM *HRESTYPEENUM; typedef struct _HRESTYPEENUM *HRESTYPEENUM;
typedef struct _HREGBATCH *HREGBATCH; typedef struct _HREGBATCH *HREGBATCH;
typedef struct _HREGBATCHPORT *HREGBATCHPORT;
typedef struct _HREGBATCHNOTIFICATION *HREGBATCHNOTIFICATION;
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
typedef struct _HNODEENUMEX *HNODEENUMEX;
typedef struct _HCLUSENUMEX *HCLUSENUMEX;
#endif
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
// //
// Definitions used in cluster management routines. // Definitions used in cluster management routines.
// //
#define MAX_CLUSTERNAME_LENGTH DNS_MAX_LABEL_LENGTH #define MAX_CLUSTERNAME_LENGTH DNS_MAX_LABEL_LENGTH
#ifndef _CLUSTER_API_TYPES_ #ifndef _CLUSTER_API_TYPES_
skipping to change at line 109 skipping to change at line 128
DWORD dwFlags; DWORD dwFlags;
DWORD dwReserved; DWORD dwReserved;
} CLUSTERVERSIONINFO, *LPCLUSTERVERSIONINFO, *PCLUSTERVERSIONINFO; } CLUSTERVERSIONINFO, *LPCLUSTERVERSIONINFO, *PCLUSTERVERSIONINFO;
typedef struct CLUS_STARTING_PARAMS { typedef struct CLUS_STARTING_PARAMS {
DWORD dwSize; DWORD dwSize;
BOOL bForm; BOOL bForm;
BOOL bFirst; BOOL bFirst;
} CLUS_STARTING_PARAMS, * PCLUS_STARTING_PARAMS; } CLUS_STARTING_PARAMS, * PCLUS_STARTING_PARAMS;
#define CLUSTER_VERSION_FLAG_MIXED_MODE 0x00000001 #define CLUSTER_VERSION_FLAG_MIXED_MODE 0x00000001
#define CLUSTER_VERSION_UNKNOWN 0xFFFFFFFF
#define NT4_MAJOR_VERSION 1 #define NT4_MAJOR_VERSION 1
#define NT4SP4_MAJOR_VERSION 2 #define NT4SP4_MAJOR_VERSION 2
#define NT5_MAJOR_VERSION 3 #define NT5_MAJOR_VERSION 3
#define NT51_MAJOR_VERSION 4 #define NT51_MAJOR_VERSION 4
#define LONGHORN_MAJOR_VERSION 5 #define NT6_MAJOR_VERSION 5
#define NT7_MAJOR_VERSION 6
#define CLUSTER_VERSION_UNKNOWN 0xFFFFFFFF
// //
// Version number macros // Version number macros
// //
#define CLUSTER_MAKE_VERSION( _maj, _min ) ((( _maj ) << 16 ) | ( _min )) #define CLUSTER_MAKE_VERSION( _maj, _min ) ((( _maj ) << 16 ) | ( _min ))
#define CLUSTER_GET_MAJOR_VERSION( _ver ) (( _ver ) >> 16 ) #define CLUSTER_GET_MAJOR_VERSION( _ver ) (( _ver ) >> 16 )
#define CLUSTER_GET_MINOR_VERSION( _ver ) (( _ver ) & 0xFFFF ) #define CLUSTER_GET_MINOR_VERSION( _ver ) (( _ver ) & 0xFFFF )
#endif // MIDL_PASS #endif // MIDL_PASS
skipping to change at line 172 skipping to change at line 192
typedef enum _CLUSTER_REG_COMMAND typedef enum _CLUSTER_REG_COMMAND
{ {
CLUSREG_COMMAND_NONE = 0, CLUSREG_COMMAND_NONE = 0,
CLUSREG_SET_VALUE = 1, CLUSREG_SET_VALUE = 1,
CLUSREG_CREATE_KEY, CLUSREG_CREATE_KEY,
CLUSREG_DELETE_KEY, CLUSREG_DELETE_KEY,
CLUSREG_DELETE_VALUE, CLUSREG_DELETE_VALUE,
CLUSREG_SET_KEY_SECURITY, CLUSREG_SET_KEY_SECURITY,
CLUSREG_VALUE_DELETED,
CLUSREG_LAST_COMMAND CLUSREG_LAST_COMMAND
} CLUSTER_REG_COMMAND; } CLUSTER_REG_COMMAND;
#if ( !MIDL_PASS && !__midl ) #if ( !MIDL_PASS && !__midl )
typedef struct _CLUSCTL_RESOURCE_STATE_CHANGE_REASON_STRUCT { typedef struct _CLUSCTL_RESOURCE_STATE_CHANGE_REASON_STRUCT {
DWORD dwSize; DWORD dwSize;
DWORD dwVersion; DWORD dwVersion;
CLUSTER_RESOURCE_STATE_CHANGE_REASON eReason; CLUSTER_RESOURCE_STATE_CHANGE_REASON eReason;
} CLUSCTL_RESOURCE_STATE_CHANGE_REASON_STRUCT, *PCLUSCTL_RESOURCE_STATE_CHANGE_R EASON_STRUCT; } CLUSCTL_RESOURCE_STATE_CHANGE_REASON_STRUCT, *PCLUSCTL_RESOURCE_STATE_CHANGE_R EASON_STRUCT;
typedef struct _CLUSTER_BATCH_COMMAND
{
CLUSTER_REG_COMMAND Command;
DWORD dwOptions;
LPCWSTR wzName;
BYTE CONST * lpData;
DWORD cbData;
} CLUSTER_BATCH_COMMAND;
#endif // MIDL_PASS #endif // MIDL_PASS
#if CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2
#define CLUSTER_ENUM_ITEM_VERSION_1 0x00000001
#define CLUSTER_ENUM_ITEM_VERSION CLUSTER_ENUM_ITEM_VERSION_1
typedef struct _CLUSTER_ENUM_ITEM {
DWORD dwVersion;
DWORD dwType;
DWORD cbId;
LPWSTR lpszId;
DWORD cbName;
LPWSTR lpszName;
} CLUSTER_ENUM_ITEM, *PCLUSTER_ENUM_ITEM;
#endif // CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
// //
// Interfaces for managing clusters // Interfaces for managing clusters
// //
// //
// Cluster API Specific Access Rights // Cluster API Specific Access Rights
// //
#define CLUSAPI_READ_ACCESS 0x00000001L #define CLUSAPI_READ_ACCESS 0x00000001L
skipping to change at line 212 skipping to change at line 258
// Return values for CLUSCTL_CLUSTER_CHECK_VOTER_DOWN and CLUSCTL_CLUSTER_CHECK_ VOTER_EVICT // Return values for CLUSCTL_CLUSTER_CHECK_VOTER_DOWN and CLUSCTL_CLUSTER_CHECK_ VOTER_EVICT
// //
typedef enum CLUSTER_QUORUM_VALUE { typedef enum CLUSTER_QUORUM_VALUE {
CLUSTER_QUORUM_MAINTAINED = 0, CLUSTER_QUORUM_MAINTAINED = 0,
CLUSTER_QUORUM_LOST = 1, CLUSTER_QUORUM_LOST = 1,
} CLUSTER_QUORUM_VALUE; } CLUSTER_QUORUM_VALUE;
#if ( !MIDL_PASS && !__midl ) #if ( !MIDL_PASS && !__midl )
// //
// Structure used to pass in the path to validate
//
typedef struct _CLUSTER_VALIDATE_PATH {
WCHAR szPath[];
} CLUSTER_VALIDATE_PATH, *PCLUSTER_VALIDATE_PATH;
//
// Structure used to pass in the directory to validate
//
typedef struct _CLUSTER_VALIDATE_DIRECTORY {
WCHAR szPath[];
} CLUSTER_VALIDATE_DIRECTORY, *PCLUSTER_VALIDATE_DIRECTORY;
//
// Structure used to pass in the network name to validate
//
typedef struct _CLUSTER_VALIDATE_NETNAME {
WCHAR szNetworkName[];
} CLUSTER_VALIDATE_NETNAME , *PCLUSTER_VALIDATE_NETNAME ;
//
// Structure used to pass in the file name to validate
//
typedef struct _CLUSTER_VALIDATE_CSV_FILENAME {
WCHAR szFileName[];
} CLUSTER_VALIDATE_CSV_FILENAME , *PCLUSTER_VALIDATE_CSV_FILENAME ;
//
// Structure used to return the status of a request to set the // Structure used to return the status of a request to set the
// password on the account used by the Cluster Service on each // password on the account used by the Cluster Service on each
// cluster node. // cluster node.
// //
typedef struct CLUSTER_SET_PASSWORD_STATUS { typedef struct CLUSTER_SET_PASSWORD_STATUS {
DWORD NodeId; DWORD NodeId;
BOOLEAN SetAttempted; BOOLEAN SetAttempted;
DWORD ReturnStatus; DWORD ReturnStatus;
} CLUSTER_SET_PASSWORD_STATUS, *PCLUSTER_SET_PASSWORD_STATUS; } CLUSTER_SET_PASSWORD_STATUS, *PCLUSTER_SET_PASSWORD_STATUS;
skipping to change at line 237 skipping to change at line 311
} CLUSTER_IP_ENTRY, *PCLUSTER_IP_ENTRY; } CLUSTER_IP_ENTRY, *PCLUSTER_IP_ENTRY;
typedef struct _CREATE_CLUSTER_CONFIG typedef struct _CREATE_CLUSTER_CONFIG
{ {
DWORD dwVersion; DWORD dwVersion;
PCWSTR lpszClusterName; PCWSTR lpszClusterName;
DWORD cNodes; DWORD cNodes;
PCWSTR * ppszNodeNames; PCWSTR * ppszNodeNames;
DWORD cIpEntries; DWORD cIpEntries;
PCLUSTER_IP_ENTRY pIpEntries; PCLUSTER_IP_ENTRY pIpEntries;
PCWSTR lpszQuorumVolume; BOOLEAN fEmptyCluster;
} CREATE_CLUSTER_CONFIG, *PCREATE_CLUSTER_CONFIG; } CREATE_CLUSTER_CONFIG, *PCREATE_CLUSTER_CONFIG;
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
DWORD DWORD
WINAPI WINAPI
GetNodeClusterState( GetNodeClusterState(
__in_opt LPCWSTR lpszNodeName, __in_opt LPCWSTR lpszNodeName,
__out LPDWORD pdwClusterState __out LPDWORD pdwClusterState
); );
skipping to change at line 265 skipping to change at line 339
WINAPI WINAPI
OpenCluster( OpenCluster(
__in_opt LPCWSTR lpszClusterName __in_opt LPCWSTR lpszClusterName
); );
typedef HCLUSTER typedef HCLUSTER
(WINAPI * PCLUSAPI_OPEN_CLUSTER)( (WINAPI * PCLUSAPI_OPEN_CLUSTER)(
__in_opt LPCWSTR lpszClusterName __in_opt LPCWSTR lpszClusterName
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
HCLUSTER
WINAPI
OpenClusterEx(
__in_opt LPCWSTR lpszClusterName,
__in DWORD DesiredAccess,
__out_opt DWORD* GrantedAccess
);
typedef HCLUSTER
(WINAPI * PCLUSAPI_OPEN_CLUSTER_EX)(
__in_opt LPCWSTR lpszClusterName,
__in DWORD dwDesiredAccess,
__out_opt LPDWORD lpdwGrantedAccess
);
#endif
BOOL BOOL
WINAPI WINAPI
CloseCluster( CloseCluster(
__in HCLUSTER hCluster __in HCLUSTER hCluster
); );
typedef BOOL typedef BOOL
(WINAPI * PCLUSAPI_CLOSE_CLUSTER)( (WINAPI * PCLUSAPI_CLOSE_CLUSTER)(
__in HCLUSTER hCluster __in HCLUSTER hCluster
); );
skipping to change at line 600 skipping to change at line 691
// //
// Enumeration routines // Enumeration routines
// //
#ifndef _CLUSTER_API_TYPES_ #ifndef _CLUSTER_API_TYPES_
// //
// Define enumerable types // Define enumerable types
// //
typedef enum CLUSTER_ENUM { typedef enum CLUSTER_ENUM {
CLUSTER_ENUM_NODE = 0x00000001, CLUSTER_ENUM_NODE = 0x00000001,
CLUSTER_ENUM_RESTYPE = 0x00000002, CLUSTER_ENUM_RESTYPE = 0x00000002,
CLUSTER_ENUM_RESOURCE = 0x00000004, CLUSTER_ENUM_RESOURCE = 0x00000004,
CLUSTER_ENUM_GROUP = 0x00000008, CLUSTER_ENUM_GROUP = 0x00000008,
CLUSTER_ENUM_NETWORK = 0x00000010, CLUSTER_ENUM_NETWORK = 0x00000010,
CLUSTER_ENUM_NETINTERFACE = 0x00000020, CLUSTER_ENUM_NETINTERFACE = 0x00000020,
CLUSTER_ENUM_INTERNAL_NETWORK = 0x80000000, CLUSTER_ENUM_SHARED_VOLUME_RESOURCE = 0x40000000,
CLUSTER_ENUM_INTERNAL_NETWORK = 0x80000000,
CLUSTER_ENUM_ALL = (CLUSTER_ENUM_NODE | CLUSTER_ENUM_ALL = (CLUSTER_ENUM_NODE |
CLUSTER_ENUM_RESTYPE | CLUSTER_ENUM_RESTYPE |
CLUSTER_ENUM_RESOURCE | CLUSTER_ENUM_RESOURCE |
CLUSTER_ENUM_GROUP | CLUSTER_ENUM_GROUP |
CLUSTER_ENUM_NETWORK | CLUSTER_ENUM_NETWORK |
CLUSTER_ENUM_NETINTERFACE) CLUSTER_ENUM_NETINTERFACE)
} CLUSTER_ENUM; } CLUSTER_ENUM;
skipping to change at line 675 skipping to change at line 767
WINAPI WINAPI
ClusterCloseEnum( ClusterCloseEnum(
__in HCLUSENUM hEnum __in HCLUSENUM hEnum
); );
typedef DWORD typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_CLOSE_ENUM)( (WINAPI * PCLUSAPI_CLUSTER_CLOSE_ENUM)(
__in HCLUSENUM hEnum __in HCLUSENUM hEnum
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
HCLUSENUMEX
WINAPI
ClusterOpenEnumEx(
__in HCLUSTER hCluster,
__in DWORD dwType,
__in PVOID pOptions
);
typedef HCLUSENUMEX
(WINAPI * PCLUSAPI_CLUSTER_OPEN_ENUM_EX)(
__in HCLUSTER hCluster,
__in DWORD dwType,
__in PVOID pOptions
);
DWORD
WINAPI
ClusterGetEnumCountEx(
__in HCLUSENUMEX hClusterEnum
);
typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_GET_ENUM_COUNT_EX)(
__in HCLUSENUMEX hClusterEnum
);
DWORD
WINAPI
ClusterEnumEx(
__in HCLUSENUMEX hClusterEnum,
__in DWORD dwIndex,
__inout PCLUSTER_ENUM_ITEM pItem,
__inout LPDWORD cbItem
);
typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_ENUM_EX)(
__in HCLUSENUMEX hClusterEnum,
__in DWORD dwIndex,
__inout PCLUSTER_ENUM_ITEM pItem,
__inout LPDWORD cbItem
);
DWORD
WINAPI
ClusterCloseEnumEx(
__in HCLUSENUMEX hClusterEnum
);
typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_CLOSE_ENUM_EX)(
__in HCLUSENUMEX hClusterEnum
);
#endif // CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2
#endif // MIDL_PASS #endif // MIDL_PASS
#ifndef _CLUSTER_API_TYPES_ #ifndef _CLUSTER_API_TYPES_
// //
// Define enumerable node types // Define enumerable node types
// //
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
typedef enum CLUSTER_NODE_ENUM {
CLUSTER_NODE_ENUM_NETINTERFACES = 0x00000001,
CLUSTER_NODE_ENUM_GROUPS = 0x00000002,
CLUSTER_NODE_ENUM_ALL = (CLUSTER_NODE_ENUM_NETINTERFACES |
CLUSTER_NODE_ENUM_GROUPS)
} CLUSTER_NODE_ENUM;
#else
typedef enum CLUSTER_NODE_ENUM { typedef enum CLUSTER_NODE_ENUM {
CLUSTER_NODE_ENUM_NETINTERFACES = 0x00000001, CLUSTER_NODE_ENUM_NETINTERFACES = 0x00000001,
CLUSTER_NODE_ENUM_ALL = (CLUSTER_NODE_ENUM_NETINTERFACES) CLUSTER_NODE_ENUM_ALL = (CLUSTER_NODE_ENUM_NETINTERFACES)
} CLUSTER_NODE_ENUM; } CLUSTER_NODE_ENUM;
#endif
// //
// Node-related structures and types. // Node-related structures and types.
// //
typedef enum CLUSTER_NODE_STATE { typedef enum CLUSTER_NODE_STATE {
ClusterNodeStateUnknown = -1, ClusterNodeStateUnknown = -1,
ClusterNodeUp, ClusterNodeUp,
ClusterNodeDown, ClusterNodeDown,
ClusterNodePaused, ClusterNodePaused,
ClusterNodeJoining ClusterNodeJoining
} CLUSTER_NODE_STATE; } CLUSTER_NODE_STATE;
skipping to change at line 719 skipping to change at line 883
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszNodeName __in LPCWSTR lpszNodeName
); );
typedef HNODE typedef HNODE
(WINAPI * PCLUSAPI_OPEN_CLUSTER_NODE)( (WINAPI * PCLUSAPI_OPEN_CLUSTER_NODE)(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszNodeName __in LPCWSTR lpszNodeName
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
HNODE
WINAPI
OpenClusterNodeEx(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszNodeName,
__in DWORD dwDesiredAccess,
__out_opt DWORD* lpdwGrantedAccess
);
typedef HNODE
(WINAPI * PCLUSAPI_OPEN_CLUSTER_NODE_EX)(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszNodeName,
__in DWORD dwDesiredAccess,
__out_opt LPDWORD lpdwGrantedAccess
);
#endif
BOOL BOOL
WINAPI WINAPI
CloseClusterNode( CloseClusterNode(
__in HNODE hNode __in HNODE hNode
); );
typedef BOOL typedef BOOL
(WINAPI * PCLUSAPI_CLOSE_CLUSTER_NODE)( (WINAPI * PCLUSAPI_CLOSE_CLUSTER_NODE)(
__in HNODE hNode __in HNODE hNode
); );
skipping to change at line 745 skipping to change at line 928
typedef CLUSTER_NODE_STATE typedef CLUSTER_NODE_STATE
(WINAPI * PCLUSAPI_GET_CLUSTER_NODE_STATE)( (WINAPI * PCLUSAPI_GET_CLUSTER_NODE_STATE)(
__in HNODE hNode __in HNODE hNode
); );
__success(return == ERROR_SUCCESS) __success(return == ERROR_SUCCESS)
DWORD DWORD
WINAPI WINAPI
GetClusterNodeId( GetClusterNodeId(
__in HNODE hNode, __in_opt HNODE hNode,
__out_ecount_part(*lpcchName, *lpcchName + 1) LPWSTR lpszNodeId, __out_ecount_part(*lpcchName, *lpcchName + 1) LPWSTR lpszNodeId,
__inout LPDWORD lpcchName __inout LPDWORD lpcchName
); );
typedef DWORD typedef DWORD
(WINAPI * PCLUSAPI_GET_CLUSTER_NODE_ID)( (WINAPI * PCLUSAPI_GET_CLUSTER_NODE_ID)(
__in HNODE hNode, __in_opt HNODE hNode,
__out_ecount_part(*lpcchName, *lpcchName + 1) LPWSTR lpszNodeId, __out_ecount_part(*lpcchName, *lpcchName + 1) LPWSTR lpszNodeId,
__inout LPDWORD lpcchName __inout LPDWORD lpcchName
); );
#define GetCurrentClusterNodeId(_lpszNodeId_, _lpcchName_) \ #define GetCurrentClusterNodeId(_lpszNodeId_, _lpcchName_) \
GetClusterNodeId(NULL, (_lpszNodeId_), (_lpcchName_)) GetClusterNodeId(NULL, (_lpszNodeId_), (_lpcchName_))
HCLUSTER HCLUSTER
WINAPI WINAPI
GetClusterFromNode( GetClusterFromNode(
skipping to change at line 817 skipping to change at line 1000
__in HNODE hNode, __in HNODE hNode,
__in DWORD dwType __in DWORD dwType
); );
typedef HNODEENUM typedef HNODEENUM
(WINAPI * PCLUSAPI_CLUSTER_NODE_OPEN_ENUM)( (WINAPI * PCLUSAPI_CLUSTER_NODE_OPEN_ENUM)(
__in HNODE hNode, __in HNODE hNode,
__in DWORD dwType __in DWORD dwType
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
HNODEENUMEX
WINAPI
ClusterNodeOpenEnumEx(
__in HNODE hNode,
__in DWORD dwType,
__in PVOID pOptions
);
typedef HNODEENUMEX
(WINAPI * PCLUSAPI_CLUSTER_NODE_OPEN_ENUM_EX)(
__in HNODE hNode,
__in DWORD dwType,
__in PVOID pOptions
);
DWORD
WINAPI
ClusterNodeGetEnumCountEx(
__in HNODEENUMEX hNodeEnum
);
typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_NODE_GET_ENUM_COUNT_EX)(
__in HNODEENUMEX hNodeEnum
);
DWORD
WINAPI
ClusterNodeEnumEx(
__in HNODEENUMEX hNodeEnum,
__in DWORD dwIndex,
__inout PCLUSTER_ENUM_ITEM pItem,
__inout LPDWORD cbItem
);
typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_NODE_ENUM_EX)(
__in HNODEENUMEX hNodeEnum,
__in DWORD dwIndex,
__inout PCLUSTER_ENUM_ITEM pItem,
__inout LPDWORD cbItem
);
DWORD
WINAPI
ClusterNodeCloseEnumEx(
__in HNODEENUMEX hNodeEnum
);
typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_NODE_CLOSE_ENUM_EX)(
__in HNODEENUMEX hNodeEnum
);
#endif
DWORD DWORD
WINAPI WINAPI
ClusterNodeGetEnumCount( ClusterNodeGetEnumCount(
__in HNODEENUM hNodeEnum __in HNODEENUM hNodeEnum
); );
typedef DWORD typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_NODE_GET_ENUM_COUNT)( (WINAPI * PCLUSAPI_CLUSTER_NODE_GET_ENUM_COUNT)(
__in HNODEENUM hNodeEnum __in HNODEENUM hNodeEnum
); );
skipping to change at line 958 skipping to change at line 1199
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszGroupName __in LPCWSTR lpszGroupName
); );
typedef HGROUP typedef HGROUP
(WINAPI * PCLUSAPI_OPEN_CLUSTER_GROUP)( (WINAPI * PCLUSAPI_OPEN_CLUSTER_GROUP)(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszGroupName __in LPCWSTR lpszGroupName
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
HGROUP
WINAPI
OpenClusterGroupEx(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszGroupName,
__in DWORD dwDesiredAccess,
__out_opt DWORD* lpdwGrantedAccess
);
typedef HGROUP
(WINAPI * PCLUSAPI_OPEN_CLUSTER_GROUP_EX)(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszGroupName,
__in DWORD dwDesiredAccess,
__out_opt LPDWORD lpdwGrantedAccess
);
#endif
BOOL BOOL
WINAPI WINAPI
CloseClusterGroup( CloseClusterGroup(
__in HGROUP hGroup __in HGROUP hGroup
); );
typedef BOOL typedef BOOL
(WINAPI * PCLUSAPI_CLOSE_CLUSTER_GROUP)( (WINAPI * PCLUSAPI_CLOSE_CLUSTER_GROUP)(
__in HGROUP hGroup __in HGROUP hGroup
); );
skipping to change at line 1072 skipping to change at line 1332
WINAPI WINAPI
DeleteClusterGroup( DeleteClusterGroup(
__in HGROUP hGroup __in HGROUP hGroup
); );
typedef DWORD typedef DWORD
(WINAPI * PCLUSAPI_DELETE_CLUSTER_GROUP)( (WINAPI * PCLUSAPI_DELETE_CLUSTER_GROUP)(
HGROUP hGroup HGROUP hGroup
); );
DWORD
WINAPI
DestroyClusterGroup(
__in HGROUP hGroup
);
typedef DWORD
(WINAPI * PCLUSAPI_DESTROY_CLUSTER_GROUP)(
HGROUP hGroup
);
HGROUPENUM HGROUPENUM
WINAPI WINAPI
ClusterGroupOpenEnum( ClusterGroupOpenEnum(
__in HGROUP hGroup, __in HGROUP hGroup,
__in DWORD dwType __in DWORD dwType
); );
typedef HGROUPENUM typedef HGROUPENUM
(WINAPI * PCLUSAPI_CLUSTER_GROUP_OPEN_ENUM)( (WINAPI * PCLUSAPI_CLUSTER_GROUP_OPEN_ENUM)(
HGROUP hGroup, HGROUP hGroup,
skipping to change at line 1153 skipping to change at line 1424
ClusterResourceFailed, ClusterResourceFailed,
ClusterResourcePending = 128, ClusterResourcePending = 128,
ClusterResourceOnlinePending, ClusterResourceOnlinePending,
ClusterResourceOfflinePending ClusterResourceOfflinePending
} CLUSTER_RESOURCE_STATE; } CLUSTER_RESOURCE_STATE;
typedef enum CLUSTER_RESOURCE_RESTART_ACTION { typedef enum CLUSTER_RESOURCE_RESTART_ACTION {
ClusterResourceDontRestart = 0, ClusterResourceDontRestart = 0,
ClusterResourceRestartNoNotify, ClusterResourceRestartNoNotify,
ClusterResourceRestartNotify, ClusterResourceRestartNotify,
ClusterResourceRestartNotifyIfNotInORexpression,
ClusterResourceRestartActionCount ClusterResourceRestartActionCount
} CLUSTER_RESOURCE_RESTART_ACTION, CRRA; } CLUSTER_RESOURCE_RESTART_ACTION, CRRA;
// //
// Flags for resource creation // Flags for resource creation
// //
typedef enum CLUSTER_RESOURCE_CREATE_FLAGS { typedef enum CLUSTER_RESOURCE_CREATE_FLAGS {
CLUSTER_RESOURCE_DEFAULT_MONITOR = 0, CLUSTER_RESOURCE_DEFAULT_MONITOR = 0,
CLUSTER_RESOURCE_SEPARATE_MONITOR = 1, CLUSTER_RESOURCE_SEPARATE_MONITOR = 1,
CLUSTER_RESOURCE_VALID_FLAGS = CLUSTER_RESOURCE_SEPARATE_MONITOR CLUSTER_RESOURCE_VALID_FLAGS = CLUSTER_RESOURCE_SEPARATE_MONITOR
skipping to change at line 1203 skipping to change at line 1473
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszResourceName __in LPCWSTR lpszResourceName
); );
typedef HRESOURCE typedef HRESOURCE
(WINAPI * PCLUSAPI_OPEN_CLUSTER_RESOURCE)( (WINAPI * PCLUSAPI_OPEN_CLUSTER_RESOURCE)(
HCLUSTER hCluster, HCLUSTER hCluster,
LPCWSTR lpszResourceName LPCWSTR lpszResourceName
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
HRESOURCE
WINAPI
OpenClusterResourceEx(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszResourceName,
__in DWORD dwDesiredAccess,
__out_opt DWORD* lpdwGrantedAccess
);
typedef HRESOURCE
(WINAPI * PCLUSAPI_OPEN_CLUSTER_RESOURCE_EX)(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszResourceName,
__in DWORD dwDesiredAccess,
__out_opt LPDWORD lpdwGrantedAccess
);
#endif
BOOL BOOL
WINAPI WINAPI
CloseClusterResource( CloseClusterResource(
__in HRESOURCE hResource __in HRESOURCE hResource
); );
typedef BOOL typedef BOOL
(WINAPI * PCLUSAPI_CLOSE_CLUSTER_RESOURCE)( (WINAPI * PCLUSAPI_CLOSE_CLUSTER_RESOURCE)(
HRESOURCE hResource HRESOURCE hResource
); );
skipping to change at line 1391 skipping to change at line 1680
DWORD DWORD
WINAPI WINAPI
GetClusterResourceDependencyExpression( GetClusterResourceDependencyExpression(
__in HRESOURCE hResource, __in HRESOURCE hResource,
__out_ecount_part_opt(*lpcchDependencyExpression, *lpcchDependencyExpression + 1) __out_ecount_part_opt(*lpcchDependencyExpression, *lpcchDependencyExpression + 1)
LPWSTR lpszDependencyExpression, LPWSTR lpszDependencyExpression,
__inout LPDWORD lpcchDependencyExpression __inout LPDWORD lpcchDependencyExpression
); );
typedef DWORD typedef DWORD
(WINAPI * PCLUSAPI_GET_CLUSTER_RESOURCE_DEPENDENCY_EXPRESSION)( (WINAPI * PCLUSAPI_GET_CLUSTER_RESOURCE_DEPENDENCY_EXPRESSION)(
__in HRESOURCE hResource, __in HRESOURCE hResource,
__out_ecount_part_opt(*lpcchDependencyExpression, *lpcchDependencyExpression + 1) __out_ecount_part_opt(*lpcchDependencyExpression, *lpcchDependencyExpression + 1)
LPWSTR lpszDependencyExpression, LPWSTR lpszDependencyExpression,
__inout LPDWORD lpcchDependencyExpression __inout LPDWORD lpcchDependencyExpression
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
DWORD
WINAPI
AddResourceToClusterSharedVolumes(
__in HRESOURCE hResource
);
#endif
typedef DWORD
(WINAPI * PCLUSAPI_ADD_RESOURCE_TO_CLUSTER_SHARED_VOLUMES)(
__in HRESOURCE hResource
);
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
DWORD
WINAPI
RemoveResourceFromClusterSharedVolumes(
__in HRESOURCE hResource
);
#endif
typedef DWORD
(WINAPI * PCLUSAPI_REMOVE_RESOURCE_FROM_CLUSTER_SHARED_VOLUMES)(
__in HRESOURCE hResource
);
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
DWORD
WINAPI
IsFileOnClusterSharedVolume(
__in LPCWSTR lpszPathName,
__out PBOOL pbFileIsOnSharedVolume
);
#endif
typedef DWORD
(WINAPI *PCLUSAPI_IS_FILE_ON_CLUSTER_SHARED_VOLUME)(
__in LPCWSTR lpszPathName,
__out PBOOL pbFileIsOnSharedVolume
);
BOOL BOOL
WINAPI WINAPI
CanResourceBeDependent( CanResourceBeDependent(
__in HRESOURCE hResource, __in HRESOURCE hResource,
__in HRESOURCE hResourceDependent __in HRESOURCE hResourceDependent
); );
typedef BOOL typedef BOOL
(WINAPI * PCLUSAPI_CAN_RESOURCE_BE_DEPENDENT)( (WINAPI * PCLUSAPI_CAN_RESOURCE_BE_DEPENDENT)(
HRESOURCE hResource, HRESOURCE hResource,
skipping to change at line 1517 skipping to change at line 1847
__in HNODE hNode, __in HNODE hNode,
__in_opt HNODE hHostNode, __in_opt HNODE hHostNode,
__in DWORD dwControlCode, __in DWORD dwControlCode,
__in_bcount_opt(nInBufferSize) LPVOID lpInBuffer, __in_bcount_opt(nInBufferSize) LPVOID lpInBuffer,
__in DWORD nInBufferSize, __in DWORD nInBufferSize,
__out_bcount_part_opt(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuffer, __out_bcount_part_opt(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuffer,
__in DWORD nOutBufferSize, __in DWORD nOutBufferSize,
__out_opt LPDWORD lpBytesReturned __out_opt LPDWORD lpBytesReturned
); );
__success(return != FALSE)
BOOL BOOL
WINAPI WINAPI
GetClusterResourceNetworkName( GetClusterResourceNetworkName(
__in HRESOURCE hResource, __in HRESOURCE hResource,
__out_ecount_part(*nSize, *nSize + 1) LPWSTR lpBuffer, __out_ecount_part(*nSize, *nSize + 1) LPWSTR lpBuffer,
__inout LPDWORD nSize __inout LPDWORD nSize
); );
typedef BOOL typedef BOOL
(WINAPI * PCLUSAPI_GET_CLUSTER_RESOURCE_NETWORK_NAME)( (WINAPI * PCLUSAPI_GET_CLUSTER_RESOURCE_NETWORK_NAME)(
skipping to change at line 1779 skipping to change at line 2110
CLCTL_GET_LOADBAL_PROCESS_LIST = CLCTL_EXTERNAL_CODE( 50, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ), CLCTL_GET_LOADBAL_PROCESS_LIST = CLCTL_EXTERNAL_CODE( 50, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ),
CLCTL_GET_NETWORK_NAME = CLCTL_EXTERNAL_CODE( 90, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ), CLCTL_GET_NETWORK_NAME = CLCTL_EXTERNAL_CODE( 90, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ),
CLCTL_NETNAME_GET_VIRTUAL_SERVER_TOKEN = CLCTL_EXTERNAL_CODE( 91, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ), CLCTL_NETNAME_GET_VIRTUAL_SERVER_TOKEN = CLCTL_EXTERNAL_CODE( 91, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ),
CLCTL_NETNAME_REGISTER_DNS_RECORDS = CLCTL_EXTERNAL_CODE( 92, CLUS_ACCE SS_WRITE, CLUS_NO_MODIFY ), CLCTL_NETNAME_REGISTER_DNS_RECORDS = CLCTL_EXTERNAL_CODE( 92, CLUS_ACCE SS_WRITE, CLUS_NO_MODIFY ),
CLCTL_GET_DNS_NAME = CLCTL_EXTERNAL_CODE( 93, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ), CLCTL_GET_DNS_NAME = CLCTL_EXTERNAL_CODE( 93, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ),
CLCTL_NETNAME_SET_PWD_INFO = CLCTL_EXTERNAL_CODE( 94, CLUS_ACCE SS_WRITE, CLUS_NO_MODIFY ), CLCTL_NETNAME_SET_PWD_INFO = CLCTL_EXTERNAL_CODE( 94, CLUS_ACCE SS_WRITE, CLUS_NO_MODIFY ),
CLCTL_NETNAME_DELETE_CO = CLCTL_EXTERNAL_CODE( 95, CLUS_ACCE SS_WRITE, CLUS_NO_MODIFY ), CLCTL_NETNAME_DELETE_CO = CLCTL_EXTERNAL_CODE( 95, CLUS_ACCE SS_WRITE, CLUS_NO_MODIFY ),
CLCTL_NETNAME_VALIDATE_VCO = CLCTL_EXTERNAL_CODE( 96, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ), CLCTL_NETNAME_VALIDATE_VCO = CLCTL_EXTERNAL_CODE( 96, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ),
CLCTL_NETNAME_RESET_VCO = CLCTL_EXTERNAL_CODE( 97, CLUS_ACCE
SS_READ, CLUS_NO_MODIFY ),
CLCTL_NETNAME_CREDS_UPDATED = CLCTL_EXTERNAL_CODE( 98, CLUS_ACCE
SS_WRITE, CLUS_MODIFY )|CLCTL_GLOBAL_MASK,
CLCTL_STORAGE_GET_DISK_INFO = CLCTL_EXTERNAL_CODE( 100, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_GET_DISK_INFO = CLCTL_EXTERNAL_CODE( 100, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_GET_AVAILABLE_DISKS = CLCTL_EXTERNAL_CODE( 101, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_GET_AVAILABLE_DISKS = CLCTL_EXTERNAL_CODE( 101, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_IS_PATH_VALID = CLCTL_EXTERNAL_CODE( 102, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_IS_PATH_VALID = CLCTL_EXTERNAL_CODE( 102, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_GET_ALL_AVAILABLE_DISKS = CLCTL_EXTERNAL_CODE( 103, CLUS_ACC CLCTL_STORAGE_SYNC_CLUSDISK_DB = CLCTL_EXTERNAL_CODE( 103, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ), ESS_WRITE, CLUS_MODIFY ),
CLCTL_STORAGE_SYNC_CLUSDISK_DB = (CLCTL_EXTERNAL_CODE( 103, CLUS_AC
CESS_WRITE, CLUS_MODIFY ) | CLCTL_GLOBAL_MASK),
CLCTL_QUERY_DELETE = CLCTL_EXTERNAL_CODE( 110, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_QUERY_DELETE = CLCTL_EXTERNAL_CODE( 110, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_IPADDRESS_RENEW_LEASE = CLCTL_EXTERNAL_CODE( 111, CLUS_ACC ESS_WRITE, CLUS_MODIFY ), CLCTL_IPADDRESS_RENEW_LEASE = CLCTL_EXTERNAL_CODE( 111, CLUS_ACC ESS_WRITE, CLUS_MODIFY ),
CLCTL_IPADDRESS_RELEASE_LEASE = CLCTL_EXTERNAL_CODE( 112, CLUS_ACC ESS_WRITE, CLUS_MODIFY ), CLCTL_IPADDRESS_RELEASE_LEASE = CLCTL_EXTERNAL_CODE( 112, CLUS_ACC ESS_WRITE, CLUS_MODIFY ),
CLCTL_QUERY_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE( 120, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_QUERY_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE( 120, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_SET_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE( 121, CLUS_ACC ESS_WRITE, CLUS_MODIFY ), CLCTL_SET_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE( 121, CLUS_ACC ESS_WRITE, CLUS_MODIFY ),
CLCTL_STORAGE_SET_DRIVELETTER = CLCTL_EXTERNAL_CODE( 122, CLUS_ACC ESS_WRITE, CLUS_MODIFY ), CLCTL_STORAGE_SET_DRIVELETTER = CLCTL_EXTERNAL_CODE( 122, CLUS_ACC ESS_WRITE, CLUS_MODIFY ),
CLCTL_STORAGE_GET_DRIVELETTERS = CLCTL_EXTERNAL_CODE( 123, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_GET_DRIVELETTERS = CLCTL_EXTERNAL_CODE( 123, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_GET_DISK_INFO_EX = CLCTL_EXTERNAL_CODE( 124, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_GET_DISK_INFO_EX = CLCTL_EXTERNAL_CODE( 124, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX = CLCTL_EXTERNAL_CODE( 125, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX = CLCTL_EXTERNAL_CODE( 125, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_REMAP_DRIVELETTER = CLCTL_EXTERNAL_CODE( 128, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_REMAP_DRIVELETTER = CLCTL_EXTERNAL_CODE( 128, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_GET_DISKID = CLCTL_EXTERNAL_CODE( 129, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_IS_CLUSTERABLE = CLCTL_EXTERNAL_CODE( 130, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_REMOVE_VM_OWNERSHIP = CLCTL_EXTERNAL_CODE( 131, CLUS_ACC
ESS_WRITE, CLUS_MODIFY ),
CLCTL_STORAGE_GET_MOUNTPOINTS = CLCTL_EXTERNAL_CODE( 132, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
// This control was erroneously numbered as 132 in Win2k8, but does not coll
ide with the above because
// of the access mask. Changing it to 133 causes incompatibility with apps c
ompiled against Win2k8.
CLCTL_STORAGE_CLUSTER_DISK = CLCTL_EXTERNAL_CODE( 132, CLUS_ACC
ESS_WRITE, CLUS_MODIFY )|CLCTL_GLOBAL_MASK,
CLCTL_STORAGE_GET_DIRTY = CLCTL_EXTERNAL_CODE( 134, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
// Codes 135-136 are available for storage after the two previous squatters
were made internal.
CLCTL_STORAGE_GET_SHARED_VOLUME_INFO = CLCTL_EXTERNAL_CODE( 137, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_IS_CSV_FILE = CLCTL_EXTERNAL_CODE( 138, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_VALIDATE_PATH = CLCTL_EXTERNAL_CODE( 140, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_VALIDATE_NETNAME = CLCTL_EXTERNAL_CODE( 141, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_VALIDATE_DIRECTORY = CLCTL_EXTERNAL_CODE( 142, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_BATCH_BLOCK_KEY = CLCTL_EXTERNAL_CODE( 143, CLUS_ACC
ESS_WRITE, CLUS_NO_MODIFY ),
CLCTL_BATCH_UNBLOCK_KEY = CLCTL_EXTERNAL_CODE( 144, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_FILESERVER_SHARE_ADD = CLCTL_EXTERNAL_CODE( 145, CLUS_ACC
ESS_READ, CLUS_MODIFY ),
CLCTL_FILESERVER_SHARE_DEL = CLCTL_EXTERNAL_CODE( 146, CLUS_ACC
ESS_READ, CLUS_MODIFY ),
CLCTL_FILESERVER_SHARE_MODIFY = CLCTL_EXTERNAL_CODE( 147, CLUS_ACC
ESS_READ, CLUS_MODIFY ),
CLCTL_FILESERVER_SHARE_REPORT = CLCTL_EXTERNAL_CODE( 148, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
// Codes 160-161 are available for storage after the two previous squatters
were made internal.
CLCTL_ENABLE_SHARED_VOLUME_DIRECTIO = CLCTL_EXTERNAL_CODE( 162, CLUS_ACC
ESS_WRITE, CLUS_MODIFY ),
CLCTL_DISABLE_SHARED_VOLUME_DIRECTIO = CLCTL_EXTERNAL_CODE( 163, CLUS_ACC
ESS_WRITE, CLUS_MODIFY ),
CLCTL_GET_SHARED_VOLUME_ID = CLCTL_EXTERNAL_CODE( 164, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_SET_CSV_MAINTENANCE_MODE = CLCTL_EXTERNAL_CODE( 165, CLUS_ACC
ESS_WRITE, CLUS_MODIFY ),
CLCTL_SET_SHARED_VOLUME_BACKUP_MODE = CLCTL_EXTERNAL_CODE( 166, CLUS_ACC
ESS_WRITE, CLUS_MODIFY ),
// Control codes 2000 to 2999 are reserved.
// //
// Internal control codes // Internal control codes
// //
CLCTL_DELETE = CLCTL_INTERNAL_CODE( 1, CLUS_ACCES S_WRITE, CLUS_MODIFY ), CLCTL_DELETE = CLCTL_INTERNAL_CODE( 1, CLUS_ACCES S_WRITE, CLUS_MODIFY ),
CLCTL_INSTALL_NODE = CLCTL_INTERNAL_CODE( 2, CLUS_ACCES S_WRITE, CLUS_MODIFY ), CLCTL_INSTALL_NODE = CLCTL_INTERNAL_CODE( 2, CLUS_ACCES S_WRITE, CLUS_MODIFY ),
CLCTL_EVICT_NODE = CLCTL_INTERNAL_CODE( 3, CLUS_ACCES S_WRITE, CLUS_MODIFY ), CLCTL_EVICT_NODE = CLCTL_INTERNAL_CODE( 3, CLUS_ACCES S_WRITE, CLUS_MODIFY ),
CLCTL_ADD_DEPENDENCY = CLCTL_INTERNAL_CODE( 4, CLUS_ACCES S_WRITE, CLUS_MODIFY ), CLCTL_ADD_DEPENDENCY = CLCTL_INTERNAL_CODE( 4, CLUS_ACCES S_WRITE, CLUS_MODIFY ),
CLCTL_REMOVE_DEPENDENCY = CLCTL_INTERNAL_CODE( 5, CLUS_ACCES S_WRITE, CLUS_MODIFY ), CLCTL_REMOVE_DEPENDENCY = CLCTL_INTERNAL_CODE( 5, CLUS_ACCES S_WRITE, CLUS_MODIFY ),
CLCTL_ADD_OWNER = CLCTL_INTERNAL_CODE( 6, CLUS_ACCES S_WRITE, CLUS_MODIFY ), CLCTL_ADD_OWNER = CLCTL_INTERNAL_CODE( 6, CLUS_ACCES S_WRITE, CLUS_MODIFY ),
skipping to change at line 1822 skipping to change at line 2183
CLCTL_CLUSTER_VERSION_CHANGED = CLCTL_INTERNAL_CODE( 11, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_CLUSTER_VERSION_CHANGED = CLCTL_INTERNAL_CODE( 11, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_FIXUP_ON_UPGRADE = CLCTL_INTERNAL_CODE( 12, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_FIXUP_ON_UPGRADE = CLCTL_INTERNAL_CODE( 12, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_STARTING_PHASE1 = CLCTL_INTERNAL_CODE( 13, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_STARTING_PHASE1 = CLCTL_INTERNAL_CODE( 13, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_STARTING_PHASE2 = CLCTL_INTERNAL_CODE( 14, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_STARTING_PHASE2 = CLCTL_INTERNAL_CODE( 14, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_HOLD_IO = CLCTL_INTERNAL_CODE( 15, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_HOLD_IO = CLCTL_INTERNAL_CODE( 15, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_RESUME_IO = CLCTL_INTERNAL_CODE( 16, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_RESUME_IO = CLCTL_INTERNAL_CODE( 16, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_FORCE_QUORUM = CLCTL_INTERNAL_CODE( 17, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_FORCE_QUORUM = CLCTL_INTERNAL_CODE( 17, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_INITIALIZE = CLCTL_INTERNAL_CODE( 18, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_INITIALIZE = CLCTL_INTERNAL_CODE( 18, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_STATE_CHANGE_REASON = CLCTL_INTERNAL_CODE( 19, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_STATE_CHANGE_REASON = CLCTL_INTERNAL_CODE( 19, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_PROVIDER_STATE_CHANGE = CLCTL_INTERNAL_CODE( 20, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_PROVIDER_STATE_CHANGE = CLCTL_INTERNAL_CODE( 20, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_LEAVING_GROUP = CLCTL_INTERNAL_CODE( 21, CLUS_ACCE
SS_WRITE, CLUS_MODIFY ),
CLCTL_JOINING_GROUP = CLCTL_INTERNAL_CODE( 22, CLUS_ACCE
SS_WRITE, CLUS_MODIFY ),
CLCTL_FSWITNESS_GET_EPOCH_INFO = CLCTL_INTERNAL_CODE( 23, CLUS_ACCE
SS_READ, CLUS_NO_MODIFY ),
CLCTL_FSWITNESS_SET_EPOCH_INFO = CLCTL_INTERNAL_CODE( 24, CLUS_ACCE
SS_WRITE, CLUS_MODIFY ),
CLCTL_FSWITNESS_RELEASE_LOCK = CLCTL_INTERNAL_CODE( 25, CLUS_ACCE
SS_WRITE, CLUS_MODIFY ),
CLCTL_NETNAME_CREDS_NOTIFYCAM = CLCTL_INTERNAL_CODE( 26, CLUS_ACCE
SS_WRITE, CLUS_MODIFY ),
CLCTL_STORAGE_GET_DISK_NUMBER = CLCTL_INTERNAL_CODE( 27, CLUS_ACCE
SS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_GET_CSV_DISK_INFO = CLCTL_INTERNAL_CODE( 28, CLUS_ACCE
SS_READ, CLUS_NO_MODIFY ),
CLCTL_SET_CLUSTER_MEMBERSHIP = CLCTL_INTERNAL_CODE( 29, CLUS_ACCE
SS_WRITE, CLUS_MODIFY ),
CLCTL_SET_SHARED_PR_KEY = CLCTL_INTERNAL_CODE( 30, CLUS_ACCE
SS_WRITE, CLUS_MODIFY ),
CLCTL_QUERY_CSV_MAINTENANCE_MODE = CLCTL_INTERNAL_CODE( 31, CLUS_ACCE
SS_READ, CLUS_NO_MODIFY ),
} CLCTL_CODES; } CLCTL_CODES;
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
// //
// Define macros to generate object specific control codes // Define macros to generate object specific control codes
// //
#define CLUSCTL_RESOURCE_CODE( Function ) ( \ #define CLUSCTL_RESOURCE_CODE( Function ) ( \
((CLUS_OBJECT_RESOURCE << CLUSCTL_OBJECT_SHIFT) | Function) ) ((CLUS_OBJECT_RESOURCE << CLUSCTL_OBJECT_SHIFT) | Function) )
skipping to change at line 1855 skipping to change at line 2229
#define CLUSCTL_NETINTERFACE_CODE( Function ) ( \ #define CLUSCTL_NETINTERFACE_CODE( Function ) ( \
((CLUS_OBJECT_NETINTERFACE << CLUSCTL_OBJECT_SHIFT) | Function) ) ((CLUS_OBJECT_NETINTERFACE << CLUSCTL_OBJECT_SHIFT) | Function) )
#define CLUSCTL_CLUSTER_CODE( Function ) ( \ #define CLUSCTL_CLUSTER_CODE( Function ) ( \
((CLUS_OBJECT_CLUSTER << CLUSCTL_OBJECT_SHIFT) | Function) ) ((CLUS_OBJECT_CLUSTER << CLUSCTL_OBJECT_SHIFT) | Function) )
#define CLUSCTL_USER_CODE( Function, Object ) ( \ #define CLUSCTL_USER_CODE( Function, Object ) ( \
((Object) << CLUSCTL_OBJECT_SHIFT) | ((CLCTL_USER_BASE + Function) << CLUSC TL_FUNCTION_SHIFT) ) ((Object) << CLUSCTL_OBJECT_SHIFT) | ((CLCTL_USER_BASE + Function) << CLUSC TL_FUNCTION_SHIFT) )
// //
// Define macros to get the function or access mode out of a control code // Define macros to get the function, object, access mode, or User Base flag out
// of a control code
// //
#define CLUSCTL_GET_CONTROL_FUNCTION( ControlCode ) \ #define CLUSCTL_GET_CONTROL_FUNCTION( ControlCode ) \
((ControlCode >> CLUSCTL_ACCESS_SHIFT) & CLUSCTL_CONTROL_CODE_MASK) ((ControlCode >> CLUSCTL_ACCESS_SHIFT) & CLUSCTL_CONTROL_CODE_MASK)
#define CLUSCTL_GET_ACCESS_MODE( ControlCode ) \ #define CLUSCTL_GET_ACCESS_MODE( ControlCode ) \
((ControlCode >> CLUSCTL_ACCESS_SHIFT) & CLUSCTL_ACCESS_MODE_MASK) ((ControlCode >> CLUSCTL_ACCESS_SHIFT) & CLUSCTL_ACCESS_MODE_MASK)
#define CLUSCTL_GET_CONTROL_OBJECT( ControlCode ) \ #define CLUSCTL_GET_CONTROL_OBJECT( ControlCode ) \
((ControlCode >> CLUSCTL_OBJECT_SHIFT) & CLUSCTL_OBJECT_MASK) ((ControlCode >> CLUSCTL_OBJECT_SHIFT) & CLUSCTL_OBJECT_MASK)
#define CLUSCTL_GET_USER( ControlCode ) \
((ControlCode & CLCTL_USER_MASK) >> CLCTL_USER_SHIFT)
#ifndef _CLUSTER_API_TYPES_ #ifndef _CLUSTER_API_TYPES_
// //
// Cluster Control Codes for Resources // Cluster Control Codes for Resources
// //
typedef enum CLUSCTL_RESOURCE_CODES { typedef enum CLUSCTL_RESOURCE_CODES {
// External // External
CLUSCTL_RESOURCE_UNKNOWN = CLUSCTL_RESOURCE_UNKNOWN =
CLUSCTL_RESOURCE_CODE( CLCTL_UNKNOWN ), CLUSCTL_RESOURCE_CODE( CLCTL_UNKNOWN ),
skipping to change at line 1969 skipping to change at line 2347
CLUSCTL_RESOURCE_NETNAME_SET_PWD_INFO = CLUSCTL_RESOURCE_NETNAME_SET_PWD_INFO =
CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_SET_PWD_INFO ), CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_SET_PWD_INFO ),
CLUSCTL_RESOURCE_NETNAME_DELETE_CO = CLUSCTL_RESOURCE_NETNAME_DELETE_CO =
CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_DELETE_CO ), CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_DELETE_CO ),
CLUSCTL_RESOURCE_NETNAME_VALIDATE_VCO = CLUSCTL_RESOURCE_NETNAME_VALIDATE_VCO =
CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_VALIDATE_VCO ), CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_VALIDATE_VCO ),
CLUSCTL_RESOURCE_NETNAME_RESET_VCO =
CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_RESET_VCO ),
CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS = CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS =
CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_REGISTER_DNS_RECORDS ), CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_REGISTER_DNS_RECORDS ),
CLUSCTL_RESOURCE_GET_DNS_NAME = CLUSCTL_RESOURCE_GET_DNS_NAME =
CLUSCTL_RESOURCE_CODE( CLCTL_GET_DNS_NAME ), CLUSCTL_RESOURCE_CODE( CLCTL_GET_DNS_NAME ),
CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO = CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DISK_INFO ), CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DISK_INFO ),
CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID =
skipping to change at line 2011 skipping to change at line 2392
CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE = CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE =
CLUSCTL_RESOURCE_CODE( CLCTL_SET_MAINTENANCE_MODE ), CLUSCTL_RESOURCE_CODE( CLCTL_SET_MAINTENANCE_MODE ),
CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER = CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_SET_DRIVELETTER ), CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_SET_DRIVELETTER ),
CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX = CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DISK_INFO_EX ), CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DISK_INFO_EX ),
CLUSCTL_RESOURCE_FILESERVER_SHARE_ADD =
CLUSCTL_RESOURCE_CODE( CLCTL_FILESERVER_SHARE_ADD ),
CLUSCTL_RESOURCE_FILESERVER_SHARE_DEL =
CLUSCTL_RESOURCE_CODE( CLCTL_FILESERVER_SHARE_DEL ),
CLUSCTL_RESOURCE_FILESERVER_SHARE_MODIFY =
CLUSCTL_RESOURCE_CODE( CLCTL_FILESERVER_SHARE_MODIFY ),
CLUSCTL_RESOURCE_FILESERVER_SHARE_REPORT =
CLUSCTL_RESOURCE_CODE( CLCTL_FILESERVER_SHARE_REPORT ),
CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_MOUNTPOINTS ),
CLUSCTL_RESOURCE_STORAGE_CLUSTER_DISK =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_CLUSTER_DISK ),
CLUSCTL_RESOURCE_STORAGE_GET_DIRTY =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DIRTY ),
CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_SHARED_VOLUME_INFO ),
CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE =
CLUSCTL_RESOURCE_CODE( CLCTL_SET_CSV_MAINTENANCE_MODE ),
CLUSCTL_RESOURCE_ENABLE_SHARED_VOLUME_DIRECTIO =
CLUSCTL_RESOURCE_CODE( CLCTL_ENABLE_SHARED_VOLUME_DIRECTIO ),
CLUSCTL_RESOURCE_DISABLE_SHARED_VOLUME_DIRECTIO =
CLUSCTL_RESOURCE_CODE( CLCTL_DISABLE_SHARED_VOLUME_DIRECTIO ),
CLUSCTL_RESOURCE_SET_SHARED_VOLUME_BACKUP_MODE =
CLUSCTL_RESOURCE_CODE( CLCTL_SET_SHARED_VOLUME_BACKUP_MODE ),
// Internal // Internal
CLUSCTL_RESOURCE_DELETE = CLUSCTL_RESOURCE_DELETE =
CLUSCTL_RESOURCE_CODE( CLCTL_DELETE ), CLUSCTL_RESOURCE_CODE( CLCTL_DELETE ),
CLUSCTL_RESOURCE_INSTALL_NODE = CLUSCTL_RESOURCE_INSTALL_NODE =
CLUSCTL_RESOURCE_CODE( CLCTL_INSTALL_NODE ), CLUSCTL_RESOURCE_CODE( CLCTL_INSTALL_NODE ),
CLUSCTL_RESOURCE_EVICT_NODE = CLUSCTL_RESOURCE_EVICT_NODE =
CLUSCTL_RESOURCE_CODE( CLCTL_EVICT_NODE ), CLUSCTL_RESOURCE_CODE( CLCTL_EVICT_NODE ),
skipping to change at line 2054 skipping to change at line 2471
CLUSCTL_RESOURCE_INITIALIZE = CLUSCTL_RESOURCE_INITIALIZE =
CLUSCTL_RESOURCE_CODE( CLCTL_INITIALIZE ), CLUSCTL_RESOURCE_CODE( CLCTL_INITIALIZE ),
CLUSCTL_RESOURCE_STATE_CHANGE_REASON = CLUSCTL_RESOURCE_STATE_CHANGE_REASON =
CLUSCTL_RESOURCE_CODE( CLCTL_STATE_CHANGE_REASON ), CLUSCTL_RESOURCE_CODE( CLCTL_STATE_CHANGE_REASON ),
CLUSCTL_RESOURCE_PROVIDER_STATE_CHANGE = CLUSCTL_RESOURCE_PROVIDER_STATE_CHANGE =
CLUSCTL_RESOURCE_CODE( CLCTL_PROVIDER_STATE_CHANGE ), CLUSCTL_RESOURCE_CODE( CLCTL_PROVIDER_STATE_CHANGE ),
CLUSCTL_RESOURCE_LEAVING_GROUP =
CLUSCTL_RESOURCE_CODE( CLCTL_LEAVING_GROUP ),
CLUSCTL_RESOURCE_JOINING_GROUP =
CLUSCTL_RESOURCE_CODE( CLCTL_JOINING_GROUP ),
CLUSCTL_RESOURCE_FSWITNESS_GET_EPOCH_INFO =
CLUSCTL_RESOURCE_CODE( CLCTL_FSWITNESS_GET_EPOCH_INFO ),
CLUSCTL_RESOURCE_FSWITNESS_SET_EPOCH_INFO =
CLUSCTL_RESOURCE_CODE( CLCTL_FSWITNESS_SET_EPOCH_INFO ),
CLUSCTL_RESOURCE_FSWITNESS_RELEASE_LOCK =
CLUSCTL_RESOURCE_CODE( CLCTL_FSWITNESS_RELEASE_LOCK ),
CLUSCTL_RESOURCE_NETNAME_CREDS_UPDATED =
CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_CREDS_UPDATED ),
CLUSCTL_RESOURCE_NETNAME_CREDS_NOTIFYCAM =
CLUSCTL_RESOURCE_CODE( CLCTL_NETNAME_CREDS_NOTIFYCAM ),
CLUSCTL_RESOURCE_SET_CLUSTER_MEMBERSHIP =
CLUSCTL_RESOURCE_CODE( CLCTL_SET_CLUSTER_MEMBERSHIP ),
CLUSCTL_RESOURCE_SET_SHARED_PR_KEY =
CLUSCTL_RESOURCE_CODE( CLCTL_SET_SHARED_PR_KEY ),
CLUSCTL_RESOURCE_STORAGE_GET_DISK_NUMBER =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DISK_NUMBER ),
CLUSCTL_RESOURCE_STORAGE_GET_CSV_DISK_INFO =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_CSV_DISK_INFO ),
CLUSCTL_RESOURCE_QUERY_CSV_MAINTENANCE_MODE =
CLUSCTL_RESOURCE_CODE( CLCTL_QUERY_CSV_MAINTENANCE_MODE ),
} CLUSCTL_RESOURCE_CODES; } CLUSCTL_RESOURCE_CODES;
// //
// Cluster Control Codes for Resource Types // Cluster Control Codes for Resource Types
// //
typedef enum CLUSCTL_RESOURCE_TYPE_CODES { typedef enum CLUSCTL_RESOURCE_TYPE_CODES {
// External // External
CLUSCTL_RESOURCE_TYPE_UNKNOWN = CLUSCTL_RESOURCE_TYPE_UNKNOWN =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_UNKNOWN ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_UNKNOWN ),
skipping to change at line 2134 skipping to change at line 2587
CLUSCTL_RESOURCE_TYPE_GET_CRYPTO_CHECKPOINTS = CLUSCTL_RESOURCE_TYPE_GET_CRYPTO_CHECKPOINTS =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_GET_CRYPTO_CHECKPOINTS ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_GET_CRYPTO_CHECKPOINTS ),
CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS = CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_AVAILABLE_DISKS ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_AVAILABLE_DISKS ),
CLUSCTL_RESOURCE_TYPE_STORAGE_SYNC_CLUSDISK_DB = CLUSCTL_RESOURCE_TYPE_STORAGE_SYNC_CLUSDISK_DB =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_SYNC_CLUSDISK_DB ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_SYNC_CLUSDISK_DB ),
CLUSCTL_RESOURCE_TYPE_NETNAME_VALIDATE_NETNAME =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_VALIDATE_NETNAME ),
CLUSCTL_RESOURCE_TYPE_GEN_APP_VALIDATE_PATH =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_VALIDATE_PATH ),
CLUSCTL_RESOURCE_TYPE_GEN_APP_VALIDATE_DIRECTORY =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_VALIDATE_DIRECTORY ),
CLUSCTL_RESOURCE_TYPE_GEN_SCRIPT_VALIDATE_PATH =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_VALIDATE_PATH ),
CLUSCTL_RESOURCE_TYPE_QUERY_DELETE = CLUSCTL_RESOURCE_TYPE_QUERY_DELETE =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_QUERY_DELETE ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_QUERY_DELETE ),
CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DRIVELETTERS = CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DRIVELETTERS =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_DRIVELETTERS ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_DRIVELETTERS ),
CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX = CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX ),
CLUSCTL_RESOURCE_TYPE_STORAGE_REMAP_DRIVELETTER = CLUSCTL_RESOURCE_TYPE_STORAGE_REMAP_DRIVELETTER =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_REMAP_DRIVELETTER ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_REMAP_DRIVELETTER ),
CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_DISKID ),
CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_IS_CLUSTERABLE ),
CLUSCTL_RESOURCE_TYPE_STORAGE_REMOVE_VM_OWNERSHIP =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_REMOVE_VM_OWNERSHIP ),
CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CSV_FILE =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_IS_CSV_FILE ),
CLUSCTL_RESOURCE_TYPE_WITNESS_VALIDATE_PATH =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_VALIDATE_PATH ),
// Internal // Internal
CLUSCTL_RESOURCE_TYPE_INSTALL_NODE = CLUSCTL_RESOURCE_TYPE_INSTALL_NODE =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_INSTALL_NODE ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_INSTALL_NODE ),
CLUSCTL_RESOURCE_TYPE_EVICT_NODE = CLUSCTL_RESOURCE_TYPE_EVICT_NODE =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_EVICT_NODE ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_EVICT_NODE ),
CLUSCTL_RESOURCE_TYPE_CLUSTER_VERSION_CHANGED = CLUSCTL_RESOURCE_TYPE_CLUSTER_VERSION_CHANGED =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_CLUSTER_VERSION_CHANGED ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_CLUSTER_VERSION_CHANGED ),
skipping to change at line 2424 skipping to change at line 2904
CLUSCTL_NETINTERFACE_GET_COMMON_PROPERTY_FMTS= CLUSCTL_NETINTERFACE_GET_COMMON_PROPERTY_FMTS=
CLUSCTL_NETINTERFACE_CODE( CLCTL_GET_COMMON_PROPERTY_FMTS ), CLUSCTL_NETINTERFACE_CODE( CLCTL_GET_COMMON_PROPERTY_FMTS ),
CLUSCTL_NETINTERFACE_GET_PRIVATE_PROPERTY_FMTS= CLUSCTL_NETINTERFACE_GET_PRIVATE_PROPERTY_FMTS=
CLUSCTL_NETINTERFACE_CODE( CLCTL_GET_PRIVATE_PROPERTY_FMTS ) CLUSCTL_NETINTERFACE_CODE( CLCTL_GET_PRIVATE_PROPERTY_FMTS )
} CLUSCTL_NETINTERFACE_CODES; } CLUSCTL_NETINTERFACE_CODES;
// //
// Cluster Control Codes for Nodes // Cluster Control Codes for Clusters
// //
typedef enum CLUSCTL_CLUSTER_CODES { typedef enum CLUSCTL_CLUSTER_CODES {
// External // External
CLUSCTL_CLUSTER_UNKNOWN = CLUSCTL_CLUSTER_UNKNOWN =
CLUSCTL_CLUSTER_CODE( CLCTL_UNKNOWN ), CLUSCTL_CLUSTER_CODE( CLCTL_UNKNOWN ),
CLUSCTL_CLUSTER_GET_FQDN = CLUSCTL_CLUSTER_GET_FQDN =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_FQDN ), CLUSCTL_CLUSTER_CODE( CLCTL_GET_FQDN ),
skipping to change at line 2480 skipping to change at line 2960
CLUSCTL_CLUSTER_CHECK_VOTER_EVICT= CLUSCTL_CLUSTER_CHECK_VOTER_EVICT=
CLUSCTL_CLUSTER_CODE( CLCTL_CHECK_VOTER_EVICT ), CLUSCTL_CLUSTER_CODE( CLCTL_CHECK_VOTER_EVICT ),
CLUSCTL_CLUSTER_CHECK_VOTER_DOWN= CLUSCTL_CLUSTER_CHECK_VOTER_DOWN=
CLUSCTL_CLUSTER_CODE( CLCTL_CHECK_VOTER_DOWN ), CLUSCTL_CLUSTER_CODE( CLCTL_CHECK_VOTER_DOWN ),
CLUSCTL_CLUSTER_SHUTDOWN= CLUSCTL_CLUSTER_SHUTDOWN=
CLUSCTL_CLUSTER_CODE( CLCTL_SHUTDOWN ), CLUSCTL_CLUSTER_CODE( CLCTL_SHUTDOWN ),
CLUSCTL_CLUSTER_BATCH_BLOCK_KEY =
CLUSCTL_CLUSTER_CODE( CLCTL_BATCH_BLOCK_KEY ),
CLUSCTL_CLUSTER_BATCH_UNBLOCK_KEY =
CLUSCTL_CLUSTER_CODE( CLCTL_BATCH_UNBLOCK_KEY ),
CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_SHARED_VOLUME_ID ),
} CLUSCTL_CLUSTER_CODES; } CLUSCTL_CLUSTER_CODES;
// //
// Cluster Resource Class types // Cluster Resource Class types
// //
typedef enum CLUSTER_RESOURCE_CLASS { typedef enum CLUSTER_RESOURCE_CLASS {
CLUS_RESCLASS_UNKNOWN = 0, CLUS_RESCLASS_UNKNOWN = 0,
CLUS_RESCLASS_STORAGE, CLUS_RESCLASS_STORAGE,
CLUS_RESCLASS_NETWORK, CLUS_RESCLASS_NETWORK,
CLUS_RESCLASS_USER = 32768 CLUS_RESCLASS_USER = 32768
skipping to change at line 2510 skipping to change at line 2999
typedef enum CLUS_RESSUBCLASS_STORAGE { typedef enum CLUS_RESSUBCLASS_STORAGE {
CLUS_RESSUBCLASS_STORAGE_SHARED_BUS = 0x80000000 CLUS_RESSUBCLASS_STORAGE_SHARED_BUS = 0x80000000
} CLUS_RESSUBCLASS_STORAGE; } CLUS_RESSUBCLASS_STORAGE;
typedef enum CLUS_RESSUBCLASS_NETWORK { typedef enum CLUS_RESSUBCLASS_NETWORK {
CLUS_RESSUBCLASS_NETWORK_INTERNET_PROTOCOL = 0x80000000 // Identifies IP address providers CLUS_RESSUBCLASS_NETWORK_INTERNET_PROTOCOL = 0x80000000 // Identifies IP address providers
} CLUS_RESSUBCLASS_NETWORK; } CLUS_RESSUBCLASS_NETWORK;
// //
// Cluster Characteristics // Cluster Characteristics used by resource types and resources
// //
typedef enum CLUS_CHARACTERISTICS { typedef enum CLUS_CHARACTERISTICS {
CLUS_CHAR_UNKNOWN = 0x00000000, CLUS_CHAR_UNKNOWN = 0x00000000,
CLUS_CHAR_QUORUM = 0x00000001, CLUS_CHAR_QUORUM = 0x00000001,
CLUS_CHAR_DELETE_REQUIRES_ALL_NODES = 0x00000002, CLUS_CHAR_DELETE_REQUIRES_ALL_NODES = 0x00000002,
CLUS_CHAR_LOCAL_QUORUM = 0x00000004, CLUS_CHAR_LOCAL_QUORUM = 0x00000004, // deprecated in
CLUS_CHAR_LOCAL_QUORUM_DEBUG = 0x00000008, Vista
CLUS_CHAR_REQUIRES_STATE_CHANGE_REASON = 0x00000010 CLUS_CHAR_LOCAL_QUORUM_DEBUG = 0x00000008, // deprecated in
Vista
CLUS_CHAR_REQUIRES_STATE_CHANGE_REASON = 0x00000010,
CLUS_CHAR_BROADCAST_DELETE = 0x00000020,
CLUS_CHAR_SINGLE_CLUSTER_INSTANCE = 0x00000040, // only one reso
urce of this type allowed per cluster
CLUS_CHAR_SINGLE_GROUP_INSTANCE = 0x00000080 // only one reso
urce of this type allowed per group
} CLUS_CHARACTERISTICS; } CLUS_CHARACTERISTICS;
// //
// Cluster Flags // Cluster Flags
// //
typedef enum CLUS_FLAGS { typedef enum CLUS_FLAGS {
CLUS_FLAG_CORE = 0x00000001 CLUS_FLAG_CORE = 0x00000001
} CLUS_FLAGS; } CLUS_FLAGS;
// //
skipping to change at line 2540 skipping to change at line 3032
// //
#if ( !MIDL_PASS && !__midl ) #if ( !MIDL_PASS && !__midl )
// Property syntax. Used for property names and values. // Property syntax. Used for property names and values.
typedef union CLUSPROP_SYNTAX { typedef union CLUSPROP_SYNTAX {
DWORD dw; DWORD dw;
struct { struct {
WORD wFormat; WORD wFormat;
WORD wType; WORD wType;
}; } DUMMYSTRUCTNAME;
} CLUSPROP_SYNTAX, *PCLUSPROP_SYNTAX; } CLUSPROP_SYNTAX, *PCLUSPROP_SYNTAX;
// Property value. // Property value.
typedef struct CLUSPROP_VALUE { typedef struct CLUSPROP_VALUE {
CLUSPROP_SYNTAX Syntax; CLUSPROP_SYNTAX Syntax;
DWORD cbLength; DWORD cbLength;
} CLUSPROP_VALUE, *PCLUSPROP_VALUE; } CLUSPROP_VALUE, *PCLUSPROP_VALUE;
// Binary property value. // Binary property value.
#ifdef __cplusplus #ifdef __cplusplus
skipping to change at line 2641 skipping to change at line 3133
// Security Descriptor property value. // Security Descriptor property value.
#ifdef __cplusplus #ifdef __cplusplus
typedef struct CLUSPROP_SECURITY_DESCRIPTOR : public CLUSPROP_VALUE { typedef struct CLUSPROP_SECURITY_DESCRIPTOR : public CLUSPROP_VALUE {
#else #else
typedef struct CLUSPROP_SECURITY_DESCRIPTOR { typedef struct CLUSPROP_SECURITY_DESCRIPTOR {
CLUSPROP_VALUE; CLUSPROP_VALUE;
#endif #endif
union { union {
SECURITY_DESCRIPTOR_RELATIVE sd; SECURITY_DESCRIPTOR_RELATIVE sd;
BYTE rgbSecurityDescriptor[]; BYTE rgbSecurityDescriptor[];
}; } DUMMYUNIONNAME;
} CLUSPROP_SECURITY_DESCRIPTOR, *PCLUSPROP_SECURITY_DESCRIPTOR; } CLUSPROP_SECURITY_DESCRIPTOR, *PCLUSPROP_SECURITY_DESCRIPTOR;
// FILETIME Time property value. // FILETIME Time property value.
#ifdef __cplusplus #ifdef __cplusplus
typedef struct CLUSPROP_FILETIME typedef struct CLUSPROP_FILETIME
: public CLUSPROP_VALUE { : public CLUSPROP_VALUE {
#else #else
typedef struct CLUSPROP_FILETIME { typedef struct CLUSPROP_FILETIME {
CLUSPROP_VALUE; CLUSPROP_VALUE;
#endif #endif
FILETIME ft; FILETIME ft;
} CLUSPROP_FILETIME, *PCLUSPROP_FILETIME; } CLUSPROP_FILETIME, *PCLUSPROP_FILETIME;
// Resource class info returned by CLCTL_GET_CLASS_INFO control functions. // Resource class info returned by CLCTL_GET_CLASS_INFO control functions.
typedef struct CLUS_RESOURCE_CLASS_INFO { typedef struct CLUS_RESOURCE_CLASS_INFO {
union { union {
struct { struct {
union { union {
DWORD dw; DWORD dw;
CLUSTER_RESOURCE_CLASS rc; CLUSTER_RESOURCE_CLASS rc;
}; } DUMMYUNIONNAME;
DWORD SubClass; DWORD SubClass;
}; } DUMMYSTRUCTNAME;
ULARGE_INTEGER li; ULARGE_INTEGER li;
}; } DUMMYUNIONNAME;
} CLUS_RESOURCE_CLASS_INFO, *PCLUS_RESOURCE_CLASS_INFO; } CLUS_RESOURCE_CLASS_INFO, *PCLUS_RESOURCE_CLASS_INFO;
// Resource class property value. // Resource class property value.
#ifdef __cplusplus #ifdef __cplusplus
typedef struct CLUSPROP_RESOURCE_CLASS typedef struct CLUSPROP_RESOURCE_CLASS
: public CLUSPROP_VALUE { : public CLUSPROP_VALUE {
#else #else
typedef struct CLUSPROP_RESOURCE_CLASS { typedef struct CLUSPROP_RESOURCE_CLASS {
CLUSPROP_VALUE; CLUSPROP_VALUE;
#endif #endif
skipping to change at line 2736 skipping to change at line 3228
DWORD dwFlags; DWORD dwFlags;
WCHAR szDeviceName[MAX_PATH]; WCHAR szDeviceName[MAX_PATH];
WCHAR szVolumeLabel[MAX_PATH]; WCHAR szVolumeLabel[MAX_PATH];
DWORD dwSerialNumber; DWORD dwSerialNumber;
DWORD rgdwMaximumComponentLength; DWORD rgdwMaximumComponentLength;
DWORD dwFileSystemFlags; DWORD dwFileSystemFlags;
WCHAR szFileSystem[32]; WCHAR szFileSystem[32];
} CLUS_PARTITION_INFO, *PCLUS_PARTITION_INFO; } CLUS_PARTITION_INFO, *PCLUS_PARTITION_INFO;
// Disk partition information ex // Disk partition information ex
// NOTE: property lists are 32b aligned which means this structure could be retu
rned with a starting
// address that is 32b. aligned, i.e., an address ending in 0, 4, 8 or 0xC. The
distance to the
// ULARGE_INTEGER members are properly aligned when the address of the structure
ends with 0 or 8 but
// are unaligned when the structure addresses ends with 4 or 0xC. Since it is un
predictable as to
// the alignment of the structure's address, the developer must always access th
e ULARGE_INTEGER members
// with unaligned pointers or copy the data to another, aligned structure.
typedef struct CLUS_PARTITION_INFO_EX { typedef struct CLUS_PARTITION_INFO_EX {
DWORD dwFlags; DWORD dwFlags;
WCHAR szDeviceName[MAX_PATH]; WCHAR szDeviceName[MAX_PATH];
WCHAR szVolumeLabel[MAX_PATH]; WCHAR szVolumeLabel[MAX_PATH];
DWORD dwSerialNumber; DWORD dwSerialNumber;
DWORD rgdwMaximumComponentLength; DWORD rgdwMaximumComponentLength;
DWORD dwFileSystemFlags; DWORD dwFileSystemFlags;
WCHAR szFileSystem[32]; WCHAR szFileSystem[32];
ULARGE_INTEGER TotalSizeInBytes; ULARGE_INTEGER TotalSizeInBytes;
ULARGE_INTEGER FreeSizeInBytes; ULARGE_INTEGER FreeSizeInBytes;
DWORD DeviceNumber; DWORD DeviceNumber;
DWORD PartitionNumber; DWORD PartitionNumber;
GUID VolumeGuid; GUID VolumeGuid;
} CLUS_PARTITION_INFO_EX, *PCLUS_PARTITION_INFO_EX; } CLUS_PARTITION_INFO_EX, *PCLUS_PARTITION_INFO_EX;
typedef enum _CLUSTER_CSV_VOLUME_FAULT_STATE {
VolumeStateNoFaults = 0x00000000,
VolumeStateNoDirectIO = 0x00000001,
VolumeStateNoAccess = 0x00000002,
VolumeStateInMaintenance = 0x00000004,
} CLUSTER_CSV_VOLUME_FAULT_STATE, *PCLUSTER_CSV_VOLUME_FAULT_STATE;
typedef enum _CLUSTER_SHARED_VOLUME_BACKUP_STATE {
VolumeBackupNone = 0x00000000,
VolumeBackupInProgress = 0x00000001
} CLUSTER_SHARED_VOLUME_BACKUP_STATE, *PCLUSTER_SHARED_VOLUME_BACKUP_STATE;
typedef struct _CLUS_CSV_VOLUME_INFO {
ULARGE_INTEGER VolumeOffset;
DWORD PartitionNumber;
CLUSTER_CSV_VOLUME_FAULT_STATE FaultState;
CLUSTER_SHARED_VOLUME_BACKUP_STATE BackupState;
WCHAR szVolumeFriendlyName[MAX_PATH];
WCHAR szVolumeName[50]; // volume GUID
} CLUS_CSV_VOLUME_INFO, *PCLUS_CSV_VOLUME_INFO;
typedef struct _CLUS_DISK_NUMBER_INFO {
DWORD DiskNumber;
DWORD BytesPerSector;
} CLUS_DISK_NUMBER_INFO, *PCLUS_DISK_NUMBER_INFO;
typedef struct _CLUS_SHARED_VOLUME_BACKUP_MODE {
CLUSTER_SHARED_VOLUME_BACKUP_STATE BackupState;
DWORD DelayTimerInSecs;
WCHAR VolumeName[MAX_PATH];
} CLUS_SHARED_VOLUME_BACKUP_MODE, *PCLUS_SHARED_VOLUME_BACKUP_MODE;
// Disk partition information property value. // Disk partition information property value.
#ifdef __cplusplus #ifdef __cplusplus
typedef struct CLUSPROP_PARTITION_INFO typedef struct CLUSPROP_PARTITION_INFO
: public CLUSPROP_VALUE : public CLUSPROP_VALUE
, public CLUS_PARTITION_INFO { , public CLUS_PARTITION_INFO {
#else #else
typedef struct CLUSPROP_PARTITION_INFO { typedef struct CLUSPROP_PARTITION_INFO {
CLUSPROP_VALUE; CLUSPROP_VALUE;
CLUS_PARTITION_INFO; CLUS_PARTITION_INFO;
#endif #endif
skipping to change at line 2807 skipping to change at line 3340
typedef CLUSPROP_DWORD CLUSPROP_DISK_SIGNATURE, *PCLUSPROP_DISK_SIGNATURE; typedef CLUSPROP_DWORD CLUSPROP_DISK_SIGNATURE, *PCLUSPROP_DISK_SIGNATURE;
// SCSI Address. // SCSI Address.
typedef struct CLUS_SCSI_ADDRESS { typedef struct CLUS_SCSI_ADDRESS {
union { union {
struct { struct {
UCHAR PortNumber; UCHAR PortNumber;
UCHAR PathId; UCHAR PathId;
UCHAR TargetId; UCHAR TargetId;
UCHAR Lun; UCHAR Lun;
}; } DUMMYSTRUCTNAME;
DWORD dw; DWORD dw;
}; } DUMMYUNIONNAME;
} CLUS_SCSI_ADDRESS, *PCLUS_SCSI_ADDRESS; } CLUS_SCSI_ADDRESS, *PCLUS_SCSI_ADDRESS;
// SCSI Address property value. // SCSI Address property value.
#ifdef __cplusplus #ifdef __cplusplus
typedef struct CLUSPROP_SCSI_ADDRESS typedef struct CLUSPROP_SCSI_ADDRESS
: public CLUSPROP_VALUE : public CLUSPROP_VALUE
, public CLUS_SCSI_ADDRESS { , public CLUS_SCSI_ADDRESS {
#else #else
typedef struct CLUSPROP_SCSI_ADDRESS { typedef struct CLUSPROP_SCSI_ADDRESS {
CLUSPROP_VALUE; CLUSPROP_VALUE;
skipping to change at line 2857 skipping to change at line 3390
WCHAR ObjectGuid[MAX_OBJECTID]; // WCHAR ObjectGuid[MAX_OBJECTID]; //
} CLUS_NETNAME_PWD_INFO, *PCLUS_NETNAME_PWD_INFO; } CLUS_NETNAME_PWD_INFO, *PCLUS_NETNAME_PWD_INFO;
// //
// input/output structure associated with Maintenance Mode // input/output structure associated with Maintenance Mode
// //
typedef struct CLUS_MAINTENANCE_MODE_INFO { typedef struct CLUS_MAINTENANCE_MODE_INFO {
BOOL InMaintenance; BOOL InMaintenance;
} CLUS_MAINTENANCE_MODE_INFO, *PCLUS_MAINTENANCE_MODE_INFO; } CLUS_MAINTENANCE_MODE_INFO, *PCLUS_MAINTENANCE_MODE_INFO;
typedef struct CLUS_CSV_MAINTENANCE_MODE_INFO {
BOOL InMaintenance;
WCHAR VolumeName[MAX_PATH];
} CLUS_CSV_MAINTENANCE_MODE_INFO, *PCLUS_CSV_MAINTENANCE_MODE_INFO;
#define MAINTENANCE_MODE_V2_SIG 0xabbaf00f #define MAINTENANCE_MODE_V2_SIG 0xabbaf00f
typedef enum _MAINTENANCE_MODE_TYPE_ENUM { typedef enum _MAINTENANCE_MODE_TYPE_ENUM {
MaintenanceModeTypeDisableIsAliveCheck=1, MaintenanceModeTypeDisableIsAliveCheck=1,
MaintenanceModeTypeOfflineResource=2, MaintenanceModeTypeOfflineResource=2,
MaintenanceModeTypeUnclusterResource=3, MaintenanceModeTypeUnclusterResource=3,
} MAINTENANCE_MODE_TYPE_ENUM, *PMAINTENANCE_MODE_TYPE_ENUM; } MAINTENANCE_MODE_TYPE_ENUM, *PMAINTENANCE_MODE_TYPE_ENUM;
typedef struct _CLUS_MAINTENANCE_MODE_INFOEX { typedef struct _CLUS_MAINTENANCE_MODE_INFOEX {
BOOL InMaintenance; BOOL InMaintenance;
skipping to change at line 2907 skipping to change at line 3445
// //
// values for IP Address' EnableNetbios property // values for IP Address' EnableNetbios property
// //
typedef enum CLUSPROP_IPADDR_ENABLENETBIOS { typedef enum CLUSPROP_IPADDR_ENABLENETBIOS {
CLUSPROP_IPADDR_ENABLENETBIOS_DISABLED = 0, CLUSPROP_IPADDR_ENABLENETBIOS_DISABLED = 0,
CLUSPROP_IPADDR_ENABLENETBIOS_ENABLED, CLUSPROP_IPADDR_ENABLENETBIOS_ENABLED,
CLUSPROP_IPADDR_ENABLENETBIOS_TRACK_NIC CLUSPROP_IPADDR_ENABLENETBIOS_TRACK_NIC
} CLUSPROP_IPADDR_ENABLENETBIOS; } CLUSPROP_IPADDR_ENABLENETBIOS;
//
// List of change notifications for File Server resource.
//
typedef enum _FILESHARE_CHANGE_ENUM {
FILESHARE_CHANGE_NONE,
FILESHARE_CHANGE_ADD,
FILESHARE_CHANGE_DEL,
FILESHARE_CHANGE_MODIFY
} FILESHARE_CHANGE_ENUM, *PFILESHARE_CHANGE_ENUM;
// Copied from Lmcons.h
#define NNLEN 80 // Net name length (share name)
typedef struct _FILESHARE_CHANGE {
FILESHARE_CHANGE_ENUM Change;
WCHAR ShareName[NNLEN+4];
} FILESHARE_CHANGE, *PFILESHARE_CHANGE;
#pragma warning(push)
#pragma warning(disable: 4200)
typedef struct _FILESHARE_CHANGE_LIST {
DWORD NumEntries;
FILESHARE_CHANGE ChangeEntry[0];
} FILESHARE_CHANGE_LIST, *PFILESHARE_CHANGE_LIST;
#pragma warning(pop)
// Helper for building or parsing a property list buffer. // Helper for building or parsing a property list buffer.
typedef union CLUSPROP_BUFFER_HELPER { typedef union CLUSPROP_BUFFER_HELPER {
BYTE * pb; BYTE * pb;
WORD * pw; WORD * pw;
DWORD * pdw; DWORD * pdw;
LONG * pl; LONG * pl;
LPWSTR psz; LPWSTR psz;
PCLUSPROP_LIST pList; PCLUSPROP_LIST pList;
PCLUSPROP_SYNTAX pSyntax; PCLUSPROP_SYNTAX pSyntax;
PCLUSPROP_PROPERTY_NAME pName; PCLUSPROP_PROPERTY_NAME pName;
skipping to change at line 2976 skipping to change at line 3539
#ifndef _CLUSTER_API_TYPES_ #ifndef _CLUSTER_API_TYPES_
// //
// Define enumerable types // Define enumerable types
// //
typedef enum CLUSTER_RESOURCE_ENUM { typedef enum CLUSTER_RESOURCE_ENUM {
CLUSTER_RESOURCE_ENUM_DEPENDS = 0x00000001, CLUSTER_RESOURCE_ENUM_DEPENDS = 0x00000001,
CLUSTER_RESOURCE_ENUM_PROVIDES = 0x00000002, CLUSTER_RESOURCE_ENUM_PROVIDES = 0x00000002,
CLUSTER_RESOURCE_ENUM_NODES = 0x00000004, CLUSTER_RESOURCE_ENUM_NODES = 0x00000004,
CLUSTER_RESOURCE_ENUM_ALL = (CLUSTER_RESOURCE_ENUM_DEPENDS | CLUSTER_RESOURCE_ENUM_ALL = (CLUSTER_RESOURCE_ENUM_DEPENDS |
CLUSTER_RESOURCE_ENUM_PROVIDES | CLUSTER_RESOURCE_ENUM_PROVIDES |
CLUSTER_RESOURCE_ENUM_NODES) CLUSTER_RESOURCE_ENUM_NODES)
} CLUSTER_RESOURCE_ENUM; } CLUSTER_RESOURCE_ENUM;
typedef enum CLUSTER_RESOURCE_TYPE_ENUM { typedef enum CLUSTER_RESOURCE_TYPE_ENUM {
CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001, CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001,
CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES = 0x00000002,
CLUSTER_RESOURCE_TYPE_ENUM_ALL = (CLUSTER_RESOURCE_TYPE_ENUM_NODES) CLUSTER_RESOURCE_TYPE_ENUM_ALL = (CLUSTER_RESOURCE_TYPE_ENUM_NODES |
CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES
)
} CLUSTER_RESOURCE_TYPE_ENUM; } CLUSTER_RESOURCE_TYPE_ENUM;
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
#if ( !MIDL_PASS && !__midl ) #if ( !MIDL_PASS && !__midl )
HRESENUM HRESENUM
WINAPI WINAPI
ClusterResourceOpenEnum( ClusterResourceOpenEnum(
__in HRESOURCE hResource, __in HRESOURCE hResource,
__in DWORD dwType __in DWORD dwType
skipping to change at line 3187 skipping to change at line 3752
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszNetworkName __in LPCWSTR lpszNetworkName
); );
typedef HNETWORK typedef HNETWORK
(WINAPI * PCLUSAPI_OPEN_CLUSTER_NETWORK)( (WINAPI * PCLUSAPI_OPEN_CLUSTER_NETWORK)(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszNetworkName __in LPCWSTR lpszNetworkName
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
HNETWORK
WINAPI
OpenClusterNetworkEx(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszNetworkName,
__in DWORD dwDesiredAccess,
__out_opt DWORD* lpdwGrantedAccess
);
typedef HNETWORK
(WINAPI * PCLUSAPI_OPEN_CLUSTER_NETWORK_EX)(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszNetworkName,
__in DWORD dwDesiredAccess,
__out_opt LPDWORD lpdwGrantedAccess
);
#endif
BOOL BOOL
WINAPI WINAPI
CloseClusterNetwork( CloseClusterNetwork(
__in HNETWORK hNetwork __in HNETWORK hNetwork
); );
typedef BOOL typedef BOOL
(WINAPI * PCLUSAPI_CLOSE_CLUSTER_NETWORK)( (WINAPI * PCLUSAPI_CLOSE_CLUSTER_NETWORK)(
__in HNETWORK hNetwork __in HNETWORK hNetwork
); );
skipping to change at line 3363 skipping to change at line 3947
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszInterfaceName __in LPCWSTR lpszInterfaceName
); );
typedef HNETINTERFACE typedef HNETINTERFACE
(WINAPI * PCLUSAPI_OPEN_CLUSTER_NET_INTERFACE)( (WINAPI * PCLUSAPI_OPEN_CLUSTER_NET_INTERFACE)(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszInterfaceName __in LPCWSTR lpszInterfaceName
); );
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2)
HNETINTERFACE
WINAPI
OpenClusterNetInterfaceEx(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszInterfaceName,
__in DWORD dwDesiredAccess,
__out_opt DWORD* lpdwGrantedAccess
);
typedef HNETINTERFACE
(WINAPI * PCLUSAPI_OPEN_CLUSTER_NETINTERFACE_EX)(
__in HCLUSTER hCluster,
__in_opt LPCWSTR lpszNetInterfaceName,
__in DWORD dwDesiredAccess,
__out_opt LPDWORD lpdwGrantedAccess
);
#endif
__success(return == ERROR_SUCCESS) __success(return == ERROR_SUCCESS)
DWORD DWORD
WINAPI WINAPI
GetClusterNetInterface( GetClusterNetInterface(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in LPCWSTR lpszNodeName, __in LPCWSTR lpszNodeName,
__in LPCWSTR lpszNetworkName, __in LPCWSTR lpszNetworkName,
__out_ecount_part(*lpcchInterfaceName, *lpcchInterfaceName + 1) LPWSTR lpszI nterfaceName, __out_ecount_part(*lpcchInterfaceName, *lpcchInterfaceName + 1) LPWSTR lpszI nterfaceName,
__inout LPDWORD lpcchInterfaceName __inout LPDWORD lpcchInterfaceName
); );
skipping to change at line 3752 skipping to change at line 4355
__in_opt HKEY hKey, __in_opt HKEY hKey,
__out HREGBATCH* pHREGBATCH __out HREGBATCH* pHREGBATCH
); );
typedef LONG typedef LONG
(WINAPI *PCLUSAPI_CLUSTER_REG_CREATE_BATCH)( (WINAPI *PCLUSAPI_CLUSTER_REG_CREATE_BATCH)(
__in_opt HKEY hKey, __in_opt HKEY hKey,
__out HREGBATCH* pHREGBATCH __out HREGBATCH* pHREGBATCH
); );
LONG WINAPI ClusterRegAddCommand( LONG WINAPI ClusterRegBatchAddCommand(
__in HREGBATCH HREGBATCH, __in HREGBATCH hRegBatch,
__in CLUSTER_REG_COMMAND dwCommand, __in CLUSTER_REG_COMMAND dwCommand,
__in_opt LPCWSTR wzName, __in_opt LPCWSTR wzName,
__in DWORD dwOptions, __in DWORD dwOptions,
__in VOID CONST * lpData, __in_bcount_opt(cbData) VOID CONST * lpData,
__in DWORD cbData __in DWORD cbData
); );
typedef LONG typedef LONG
(WINAPI *PCLUSTER_REG_ADD_COMMAND)( (WINAPI *PCLUSTER_REG_BATCH_ADD_COMMAND)(
__in HREGBATCH HREGBATCH, __in HREGBATCH hRegBatch,
__in CLUSTER_REG_COMMAND dwCommand, __in CLUSTER_REG_COMMAND dwCommand,
__in DWORD dwOptions,
__in_opt LPWSTR wzName, __in_opt LPWSTR wzName,
__in VOID CONST * lpData, __in DWORD dwOptions,
__in_bcount_opt(cbData) VOID CONST * lpData,
__in DWORD cbData __in DWORD cbData
); );
LONG WINAPI ClusterRegCloseBatch( LONG WINAPI ClusterRegCloseBatch(
__in HREGBATCH HREGBATCH, __in HREGBATCH hRegBatch,
__in BOOL bCommit, __in BOOL bCommit,
__out_opt INT * failedCommandNumber __out_opt INT * failedCommandNumber
); );
typedef LONG typedef LONG
(WINAPI *PCLUSTER_REG_CLOSE_BATCH)( (WINAPI *PCLUSTER_REG_CLOSE_BATCH)(
__in HREGBATCH HREGBATCH, __in HREGBATCH hRegBatch,
__in BOOL bCommit, __in BOOL bCommit,
__out_opt INT * failedCommandNumber __out_opt INT * failedCommandNumber
); );
LONG WINAPI ClusterRegBatchReadCommand(
__in HREGBATCHNOTIFICATION hBatchNotification,
__out CLUSTER_BATCH_COMMAND * pBatchCommand);
typedef LONG
(WINAPI *PCLUSTER_REG_BATCH_READ_COMMAND)(
__in HREGBATCHNOTIFICATION hBatchNotification,
__out CLUSTER_BATCH_COMMAND * pBatchCommand);
LONG WINAPI ClusterRegBatchCloseNotification(
__in HREGBATCHNOTIFICATION hBatchNotification);
typedef LONG
(WINAPI *PCLUSTER_REG_BATCH_CLOSE_NOTIFICATION)(
__in HREGBATCHNOTIFICATION hBatchNotification);
LONG WINAPI ClusterRegCreateBatchNotifyPort(
__in HKEY hKey,
__out HREGBATCHPORT * phBatchNotifyPort);
typedef LONG
(WINAPI *PCLUSTER_REG_CREATE_BATCH_NOTIFY_PORT)(
__in HKEY hKey,
__out HREGBATCHPORT * phBatchNotifyPort);
LONG WINAPI ClusterRegCloseBatchNotifyPort(
__in HREGBATCHPORT hBatchNotifyPort);
typedef LONG
(WINAPI *PCLUSTER_REG_CLOSE_BATCH_NOTIFY_PORT)(
__in HREGBATCHPORT hBatchNotifyPort);
LONG WINAPI ClusterRegGetBatchNotification(
__in HREGBATCHPORT hBatchNotify,
__out HREGBATCHNOTIFICATION * phBatchNotification);
typedef LONG
(WINAPI *PCLUSTER_REG_GET_BATCH_NOTIFICATION)(
__in HREGBATCHPORT hBatchNotify,
__out HREGBATCHNOTIFICATION * phBatchNotification);
// //
// Cluster Create, Add Node and Destroy Cluster // Cluster Create, Add Node and Destroy Cluster APIs
// //
// //
// Phases that changes in cluster persistent membership will go through. // Phases that cluster setup operations through.
// Phase numbers may arrive in any order via the callback function. // Phase numbers may arrive in any order via the callback function.
// //
typedef enum _CLUSTER_MEMBERSHIP_CHANGE_PHASE { typedef enum _CLUSTER_SETUP_PHASE {
MembershipChangePhaseValidateNodeState = 1, ClusterSetupPhaseInitialize = 1,
MembershipChangePhaseNodeInitialize = 3,
MembershipChangePhaseValidateNetft = 4,
MembershipChangePhaseValidateClusDisk = 5,
MembershipChangePhaseConfigureClusSvc = 6,
MembershipChangePhaseStartingClusSvc = 7,
MembershipChangePhaseInitialize = 8,
MembershipChangePhaseWaitForServiceStart = 9,
MembershipChangePhaseNodeUp = 10,
MembershipChangePhaseAddClusterProperties = 11,
MembershipChangePhaseCreateResourceTypes = 12,
MembershipChangePhaseCreateClusterGroup = 13,
MembershipChangePhaseCreateQuorumResource = 14,
MembershipChangePhaseCreateIPAddressResources = 15,
MembershipChangePhaseCreateNetworkName = 16,
MembershipChangePhaseClusterGroupOnline = 17,
MembershipChangePhaseGettingCurrentMembership = 18,
MembershipChangePhaseAddNodeToCluster = 19,
MembershipChangePhaseOfflineGroup = 20,
MembershipChangePhaseEvictNode = 21,
MembershipChangePhaseFailureCleanup = 22
} CLUSTER_MEMBERSHIP_CHANGE_PHASE; ClusterSetupPhaseValidateNodeState = 100,
ClusterSetupPhaseValidateNetft = 102,
ClusterSetupPhaseValidateClusDisk = 103,
ClusterSetupPhaseConfigureClusSvc = 104,
ClusterSetupPhaseStartingClusSvc = 105,
ClusterSetupPhaseQueryClusterNameAccount = 106,
ClusterSetupPhaseValidateClusterNameAccount = 107,
ClusterSetupPhaseCreateClusterAccount = 108,
ClusterSetupPhaseConfigureClusterAccount = 109,
ClusterSetupPhaseFormingCluster = 200,
ClusterSetupPhaseAddClusterProperties = 201,
ClusterSetupPhaseCreateResourceTypes = 202,
ClusterSetupPhaseCreateGroups = 203,
ClusterSetupPhaseCreateIPAddressResources = 204,
ClusterSetupPhaseCreateNetworkName = 205,
ClusterSetupPhaseClusterGroupOnline = 206,
ClusterSetupPhaseGettingCurrentMembership = 300,
ClusterSetupPhaseAddNodeToCluster = 301,
ClusterSetupPhaseNodeUp = 302,
ClusterSetupPhaseMoveGroup = 400,
ClusterSetupPhaseDeleteGroup = 401,
ClusterSetupPhaseCleanupCOs = 402,
ClusterSetupPhaseOfflineGroup = 403,
ClusterSetupPhaseEvictNode = 404,
ClusterSetupPhaseCleanupNode = 405,
ClusterSetupPhaseCoreGroupCleanup = 406,
ClusterSetupPhaseFailureCleanup = 999
} CLUSTER_SETUP_PHASE;
//
// used to delineate between phases
//
typedef enum _CLUSTER_SETUP_PHASE_TYPE {
ClusterSetupPhaseStart = 1,
ClusterSetupPhaseContinue = 2,
ClusterSetupPhaseEnd = 3
} CLUSTER_SETUP_PHASE_TYPE;
typedef enum _CLUSTER_SETUP_PHASE_SEVERITY {
ClusterSetupPhaseInformational = 1,
ClusterSetupPhaseWarning = 2,
ClusterSetupPhaseFatal = 3
} CLUSTER_SETUP_PHASE_SEVERITY;
typedef BOOL typedef BOOL
(WINAPI *PCLUSTER_MEMBERSHIP_CHANGE_PROGRESS)( (WINAPI *PCLUSTER_SETUP_PROGRESS_CALLBACK)(
PVOID pvCallbackArg, PVOID pvCallbackArg,
CLUSTER_MEMBERSHIP_CHANGE_PHASE eMembershipPhase, CLUSTER_SETUP_PHASE eSetupPhase,
CLUSTER_SETUP_PHASE_TYPE ePhaseType,
CLUSTER_SETUP_PHASE_SEVERITY ePhaseSeverity,
DWORD dwPercentComplete, DWORD dwPercentComplete,
__in PCWSTR lpszObjectName, __in_opt PCWSTR lpszObjectName,
DWORD dwStatus ); DWORD dwStatus );
HCLUSTER HCLUSTER
WINAPI WINAPI
CreateCluster( CreateCluster(
__in PCREATE_CLUSTER_CONFIG pConfig, __in PCREATE_CLUSTER_CONFIG pConfig,
__in BOOL fAcceptPartialFailure, __in_opt PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
__in_opt PCLUSTER_MEMBERSHIP_CHANGE_PROGRESS pfnProgressCallback,
__in_opt PVOID pvCallbackArg __in_opt PVOID pvCallbackArg
); );
typedef HCLUSTER typedef HCLUSTER
(WINAPI * PCLUSAPI_CREATE_CLUSTER)( (WINAPI * PCLUSAPI_CREATE_CLUSTER)(
__in PCREATE_CLUSTER_CONFIG pConfig, __in PCREATE_CLUSTER_CONFIG pConfig,
__in BOOL fAcceptPartialFailure, __in_opt PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
__in_opt PCLUSTER_MEMBERSHIP_CHANGE_PROGRESS pfnProgressCallback,
__in_opt PVOID pvCallbackArg __in_opt PVOID pvCallbackArg
); );
HNODE HNODE
WINAPI WINAPI
AddClusterNode( AddClusterNode(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in PCWSTR lpszNodeName, __in PCWSTR lpszNodeName,
__in_opt PCLUSTER_MEMBERSHIP_CHANGE_PROGRESS pfnProgressCallback, __in_opt PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
__in_opt PVOID pvCallbackArg __in_opt PVOID pvCallbackArg
); );
typedef HNODE typedef HNODE
(WINAPI * PCLUSAPI_ADD_CLUSTER_NODE)( (WINAPI * PCLUSAPI_ADD_CLUSTER_NODE)(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in PCWSTR lpszNodeName, __in PCWSTR lpszNodeName,
__in_opt PCLUSTER_MEMBERSHIP_CHANGE_PROGRESS pfnProgressCallback, __in_opt PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
__in_opt PVOID pvCallbackArg __in_opt PVOID pvCallbackArg
); );
DWORD DWORD
WINAPI WINAPI
DestroyCluster( DestroyCluster(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in_opt PCLUSTER_MEMBERSHIP_CHANGE_PROGRESS pfnProgressCallback, __in_opt PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
__in_opt PVOID pvCallbackArg __in_opt PVOID pvCallbackArg,
__in BOOL fdeleteVirtualComputerObjects
); );
typedef DWORD typedef DWORD
(WINAPI * PCLUSAPI_DESTROY_CLUSTER)( (WINAPI * PCLUSAPI_DESTROY_CLUSTER)(
__in HCLUSTER hCluster, __in HCLUSTER hCluster,
__in_opt PCLUSTER_MEMBERSHIP_CHANGE_PROGRESS pfnProgressCallback, __in_opt PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
__in_opt PVOID pvCallbackArg __in_opt PVOID pvCallbackArg,
__in BOOL fdeleteVirtualComputerObjects
); );
// //
// Standard Resource Type Names // Standard Resource Type Names
// //
#define CLUS_RESTYPE_NAME_GENAPP L"Generic Application" #define CLUS_RESTYPE_NAME_GENAPP L"Generic Application"
#define CLUS_RESTYPE_NAME_GENSVC L"Generic Service" #define CLUS_RESTYPE_NAME_GENSVC L"Generic Service"
#define CLUS_RESTYPE_NAME_GENSCRIPT L"Generic Script" #define CLUS_RESTYPE_NAME_GENSCRIPT L"Generic Script"
#define CLUS_RESTYPE_NAME_IPADDR L"IP Address" #define CLUS_RESTYPE_NAME_IPADDR L"IP Address"
#define CLUS_RESTYPE_NAME_NETNAME L"Network Name" #define CLUS_RESTYPE_NAME_NETNAME L"Network Name"
#define CLUS_RESTYPE_NAME_FILESHR L"File Share" #define CLUS_RESTYPE_NAME_FILESHR L"File Share"
#define CLUS_RESTYPE_NAME_PRTSPLR L"Print Spooler" #define CLUS_RESTYPE_NAME_PRTSPLR L"Print Spooler"
#define CLUS_RESTYPE_NAME_LKQUORUM L"Local Quorum"
#define CLUS_RESTYPE_NAME_IPV6_NATIVE L"IPv6 Address" #define CLUS_RESTYPE_NAME_IPV6_NATIVE L"IPv6 Address"
#define CLUS_RESTYPE_NAME_IPV6_TUNNEL L"IPv6 Tunnel Address" #define CLUS_RESTYPE_NAME_IPV6_TUNNEL L"IPv6 Tunnel Address"
#define CLUS_RESTYPE_NAME_VSSTASK L"Volume Shadow Copy Service Task" #define CLUS_RESTYPE_NAME_VSSTASK L"Volume Shadow Copy Service Task"
#define CLUS_RESTYPE_NAME_WINS L"WINS Service" #define CLUS_RESTYPE_NAME_WINS L"WINS Service"
#define CLUS_RESTYPE_NAME_DHCP L"DHCP Service" #define CLUS_RESTYPE_NAME_DHCP L"DHCP Service"
#define CLUS_RESTYPE_NAME_MSMQ L"Microsoft Message Queue Server" #define CLUS_RESTYPE_NAME_MSMQ L"Microsoft Message Queue Server"
#define CLUS_RESTYPE_NAME_NEW_MSMQ L"MSMQ" #define CLUS_RESTYPE_NAME_NEW_MSMQ L"MSMQ"
#define CLUS_RESTYPE_NAME_MSMQ_TRIGGER L"MSMQTriggers" #define CLUS_RESTYPE_NAME_MSMQ_TRIGGER L"MSMQTriggers"
#define CLUS_RESTYPE_NAME_MSDTC L"Distributed Transaction Coordinato r" #define CLUS_RESTYPE_NAME_MSDTC L"Distributed Transaction Coordinato r"
#define CLUS_RESTYPE_NAME_NFS L"NFS Share" #define CLUS_RESTYPE_NAME_NFS L"NFS Share"
#define CLUS_RESTYPE_NAME_ISNS L"Microsoft iSNS" #define CLUS_RESTYPE_NAME_ISNS L"Microsoft iSNS"
#define CLUS_RESTYPE_NAME_HARDDISK L"Physical Disk" #define CLUS_RESTYPE_NAME_HARDDISK L"Physical Disk"
#define CLUS_RESTYPE_NAME_PHYS_DISK CLUS_RESTYPE_NAME_HARDDISK #define CLUS_RESTYPE_NAME_PHYS_DISK CLUS_RESTYPE_NAME_HARDDISK
#define CLUS_RESTYPE_NAME_FSWITNESS L"File Share Witness"
#define CLUS_RESTYPE_NAME_FILESERVER L"File Server"
#define CLUS_RESTYPE_NAME_DFS L"Distributed File System"
#define CLUS_RESTYPE_NAME_DFSR L"DFS Replicated Folder"
#define CLUS_RESTYPE_NAME_VM L"Virtual Machine"
#define CLUS_RESTYPE_NAME_VM_CONFIG L"Virtual Machine Configuration"
// //
// Cluster common property names // Cluster common property names
// //
#define CLUSREG_NAME_ADMIN_EXT L"AdminExtensions"
#define CLUSREG_NAME_CLUS_DESC L"Description"
#define CLUSREG_NAME_CLUS_SD L"Security Descriptor"
#define CLUSREG_NAME_CLUS_DESC L"Description"
#define CLUSREG_NAME_CLUS_SD L"Security Descriptor"
#define CLUSREG_NAME_CLUS_DEFAULT_NETWORK_ROLE L"DefaultNetworkRole" #define CLUSREG_NAME_CLUS_DEFAULT_NETWORK_ROLE L"DefaultNetworkRole"
#define CLUSREG_NAME_QUORUM_ARBITRATION_TIMEOUT L"QuorumArbitrationTimeMax" #define CLUSREG_NAME_QUORUM_ARBITRATION_TIMEOUT L"QuorumArbitrationTimeMax"
#define CLUSREG_NAME_QUORUM_ARBITRATION_EQUALIZER L"QuorumArbitrationTimeMin" #define CLUSTER_HANG_TIMEOUT_KEYNAME L"ClusSvcHangTimeout"
#define CLUSTER_HEARTBEAT_TIMEOUT_KEYNAME L"ClusSvcHeartbeatTimeout"
#define CLUSTER_HANG_RECOVERY_ACTION_KEYNAME L"HangRecoveryAction" #define CLUSTER_HANG_RECOVERY_ACTION_KEYNAME L"HangRecoveryAction"
#define CLUSTER_CSA_VSS_STATE L"BackupInProgress" #define CLUSTER_CSA_VSS_STATE L"BackupInProgress"
#define CLUSTER_REQUEST_REPLY_TIMEOUT L"RequestReplyTimeout"
#define CLUSREG_NAME_DISABLE_GROUP_PREFERRED_OWNER_RANDOMIZATION L"DisableGro #define CLUSTER_WITNESS_FAILED_RESTART_INTERVAL L"WitnessRestartInterval"
upPreferredOwnerRandomization" #define CLUSTER_WITNESS_DATABASE_WRITE_TIMEOUT L"WitnessDatabaseWriteTimeout"
#define CLUSTER_ADD_EVICT_DELAY L"AddEvictDelay"
#define CLUSREG_NAME_FIXQUORUM L"FixQuorum"
#define CLUSREG_NAME_IGNORE_PERSISTENT_STATE L"IgnorePersistentStateOnStart
up"
#define CLUSTER_SHARED_VOLUMES_ROOT L"SharedVolumesRoot"
#define ENABLE_CLUSTER_SHARED_VOLUMES L"EnableSharedVolumes"
#define CLUSTER_CSV_COMPATIBLE_FILTERS L"SharedVolumeCompatibleFilter
s"
#define CLUSTER_CSV_INCOMPATIBLE_FILTERS L"SharedVolumeIncompatibleFilt
ers"
#define CLUSTER_GROUP_WAIT_DELAY L"ClusterGroupWaitDelay"
#define CLUSREG_NAME_SHUTDOWN_TIMEOUT_MINUTES L"ShutdownTimeoutInMinutes"
// //
// Properties and defaults for single and multi subnet delays and thresholds. // Properties and defaults for single and multi subnet delays and thresholds.
// //
#define CLUSREG_NAME_SAME_SUBNET_DELAY L"SameSubnetDelay"
#define CLUSREG_NAME_CROSS_SUBNET_DELAY L"CrossSubnetDelay" #define CLUSREG_NAME_SAME_SUBNET_DELAY L"SameSubnetDelay"
#define CLUSREG_NAME_SAME_SUBNET_THRESHOLD L"SameSubnetThreshold" #define CLUSREG_NAME_CROSS_SUBNET_DELAY L"CrossSubnetDelay"
#define CLUSREG_NAME_CROSS_SUBNET_THRESHOLD L"CrossSubnetThreshold" #define CLUSREG_NAME_SAME_SUBNET_THRESHOLD L"SameSubnetThreshold"
#define CLUSREG_NAME_PLUMB_ALL_CROSS_SUBNET_ROUTES L"PlumbAllCrossSubnetRoutes"
#define CLUSREG_NAME_CROSS_SUBNET_THRESHOLD L"CrossSubnetThreshold"
// //
// Node common property names // Node common property names
// //
#define CLUSREG_NAME_NODE_NAME L"NodeName" #define CLUSREG_NAME_NODE_NAME L"NodeName"
#define CLUSREG_NAME_NODE_HIGHEST_VERSION L"NodeHighestVersion" #define CLUSREG_NAME_NODE_HIGHEST_VERSION L"NodeHighestVersion"
#define CLUSREG_NAME_NODE_LOWEST_VERSION L"NodeLowestVersion" #define CLUSREG_NAME_NODE_LOWEST_VERSION L"NodeLowestVersion"
#define CLUSREG_NAME_NODE_DESC L"Description" #define CLUSREG_NAME_NODE_DESC L"Description"
#define CLUSREG_NAME_NODE_MAJOR_VERSION L"MajorVersion" #define CLUSREG_NAME_NODE_MAJOR_VERSION L"MajorVersion"
skipping to change at line 3958 skipping to change at line 4644
// //
#define CLUSREG_NAME_GRP_NAME L"Name" #define CLUSREG_NAME_GRP_NAME L"Name"
#define CLUSREG_NAME_GRP_DESC L"Description" #define CLUSREG_NAME_GRP_DESC L"Description"
#define CLUSREG_NAME_GRP_PERSISTENT_STATE L"PersistentState" #define CLUSREG_NAME_GRP_PERSISTENT_STATE L"PersistentState"
#define CLUSREG_NAME_GRP_FAILBACK_TYPE L"AutoFailbackType" #define CLUSREG_NAME_GRP_FAILBACK_TYPE L"AutoFailbackType"
#define CLUSREG_NAME_GRP_FAILBACK_WIN_START L"FailbackWindowStart" #define CLUSREG_NAME_GRP_FAILBACK_WIN_START L"FailbackWindowStart"
#define CLUSREG_NAME_GRP_FAILBACK_WIN_END L"FailbackWindowEnd" #define CLUSREG_NAME_GRP_FAILBACK_WIN_END L"FailbackWindowEnd"
#define CLUSREG_NAME_GRP_FAILOVER_THRESHOLD L"FailoverThreshold" #define CLUSREG_NAME_GRP_FAILOVER_THRESHOLD L"FailoverThreshold"
#define CLUSREG_NAME_GRP_FAILOVER_PERIOD L"FailoverPeriod" #define CLUSREG_NAME_GRP_FAILOVER_PERIOD L"FailoverPeriod"
#define CLUSREG_NAME_GRP_PRIORITY L"Priority"
#define CLUSREG_NAME_GRP_DEFAULT_OWNER L"DefaultOwner"
#define CLUSREG_NAME_GRP_ANTI_AFFINITY_CLASS_NAME L"AntiAffinityClassNames" #define CLUSREG_NAME_GRP_ANTI_AFFINITY_CLASS_NAME L"AntiAffinityClassNames"
// //
// Resource common property names // Resource common property names
// //
#define CLUSREG_NAME_RES_NAME L"Name" #define CLUSREG_NAME_RES_NAME L"Name"
#define CLUSREG_NAME_RES_TYPE L"Type" #define CLUSREG_NAME_RES_TYPE L"Type"
#define CLUSREG_NAME_RES_DESC L"Description" #define CLUSREG_NAME_RES_DESC L"Description"
#define CLUSREG_NAME_RES_SEPARATE_MONITOR L"SeparateMonitor" #define CLUSREG_NAME_RES_SEPARATE_MONITOR L"SeparateMonitor"
#define CLUSREG_NAME_RES_PERSISTENT_STATE L"PersistentState" #define CLUSREG_NAME_RES_PERSISTENT_STATE L"PersistentState"
#define CLUSREG_NAME_RES_LOOKS_ALIVE L"LooksAlivePollInterval" #define CLUSREG_NAME_RES_LOOKS_ALIVE L"LooksAlivePollInterval"
#define CLUSREG_NAME_RES_IS_ALIVE L"IsAlivePollInterval" #define CLUSREG_NAME_RES_IS_ALIVE L"IsAlivePollInterval"
#define CLUSREG_NAME_RES_RESTART_ACTION L"RestartAction" #define CLUSREG_NAME_RES_RESTART_ACTION L"RestartAction"
#define CLUSREG_NAME_RES_RESTART_THRESHOLD L"RestartThreshold" #define CLUSREG_NAME_RES_RESTART_THRESHOLD L"RestartThreshold"
#define CLUSREG_NAME_RES_RESTART_PERIOD L"RestartPeriod" #define CLUSREG_NAME_RES_RESTART_PERIOD L"RestartPeriod"
#define CLUSREG_NAME_RES_RESTART_DELAY L"RestartDelay"
#define CLUSREG_NAME_RES_RETRY_PERIOD_ON_FAILURE L"RetryPeriodOnFailure" #define CLUSREG_NAME_RES_RETRY_PERIOD_ON_FAILURE L"RetryPeriodOnFailure"
#define CLUSREG_NAME_RES_PENDING_TIMEOUT L"PendingTimeout" #define CLUSREG_NAME_RES_PENDING_TIMEOUT L"PendingTimeout"
#define CLUSREG_NAME_RES_DEADLOCK_TIMEOUT L"DeadlockTimeout" #define CLUSREG_NAME_RES_DEADLOCK_TIMEOUT L"DeadlockTimeout"
#define CLUSREG_NAME_RES_MONITOR_PID L"MonitorProcessId" #define CLUSREG_NAME_RES_MONITOR_PID L"MonitorProcessId"
#define CLUSREG_NAME_RES_INTERNAL_STATE L"InternalState" #define CLUSREG_NAME_RES_STATUS L"ResourceSpecificStatus"
// //
// Resource Type common property names // Resource Type common property names
// //
#define CLUSREG_NAME_RESTYPE_NAME L"Name" #define CLUSREG_NAME_RESTYPE_NAME L"Name"
#define CLUSREG_NAME_RESTYPE_DESC L"Description" #define CLUSREG_NAME_RESTYPE_DESC L"Description"
#define CLUSREG_NAME_RESTYPE_DLL_NAME L"DllName" #define CLUSREG_NAME_RESTYPE_DLL_NAME L"DllName"
#define CLUSREG_NAME_RESTYPE_ADMIN_EXTENSIONS L"AdminExtensions" #define CLUSREG_NAME_RESTYPE_ADMIN_EXTENSIONS L"AdminExtensions"
#define CLUSREG_NAME_RESTYPE_LOOKS_ALIVE CLUSREG_NAME_RES_LOOKS_ALIVE #define CLUSREG_NAME_RESTYPE_LOOKS_ALIVE CLUSREG_NAME_RES_LOOKS_ALIVE
skipping to change at line 4007 skipping to change at line 4696
#define CLUSREG_NAME_NET_NAME L"Name" #define CLUSREG_NAME_NET_NAME L"Name"
#define CLUSREG_NAME_NET_IPV6_ADDRESSES L"IPv6Addresses" #define CLUSREG_NAME_NET_IPV6_ADDRESSES L"IPv6Addresses"
#define CLUSREG_NAME_NET_IPV6_PREFIXLENGTHS L"IPv6PrefixLengths" #define CLUSREG_NAME_NET_IPV6_PREFIXLENGTHS L"IPv6PrefixLengths"
#define CLUSREG_NAME_NET_IPV4_ADDRESSES L"IPv4Addresses" #define CLUSREG_NAME_NET_IPV4_ADDRESSES L"IPv4Addresses"
#define CLUSREG_NAME_NET_IPV4_PREFIXLENGTHS L"IPv4PrefixLengths" #define CLUSREG_NAME_NET_IPV4_PREFIXLENGTHS L"IPv4PrefixLengths"
#define CLUSREG_NAME_NET_ADDRESS L"Address" #define CLUSREG_NAME_NET_ADDRESS L"Address"
#define CLUSREG_NAME_NET_ADDRESS_MASK L"AddressMask" #define CLUSREG_NAME_NET_ADDRESS_MASK L"AddressMask"
#define CLUSREG_NAME_NET_DESC L"Description" #define CLUSREG_NAME_NET_DESC L"Description"
#define CLUSREG_NAME_NET_ROLE L"Role" #define CLUSREG_NAME_NET_ROLE L"Role"
#define CLUSREG_NAME_NET_METRIC L"Metric"
#define CLUSREG_NAME_NET_AUTOMETRIC L"AutoMetric"
// //
// Network Interface common property names // Network Interface common property names
// //
#define CLUSREG_NAME_NETIFACE_NAME L"Name" #define CLUSREG_NAME_NETIFACE_NAME L"Name"
#define CLUSREG_NAME_NETIFACE_NODE L"Node" #define CLUSREG_NAME_NETIFACE_NODE L"Node"
#define CLUSREG_NAME_NETIFACE_NETWORK L"Network" #define CLUSREG_NAME_NETIFACE_NETWORK L"Network"
#define CLUSREG_NAME_NETIFACE_ADAPTER_NAME L"Adapter" #define CLUSREG_NAME_NETIFACE_ADAPTER_NAME L"Adapter"
#define CLUSREG_NAME_NETIFACE_ADAPTER_ID L"AdapterId" #define CLUSREG_NAME_NETIFACE_ADAPTER_ID L"AdapterId"
skipping to change at line 4041 skipping to change at line 4732
#define CLUSREG_NAME_PHYSDISK_DISKIDTYPE L"DiskIdType" #define CLUSREG_NAME_PHYSDISK_DISKIDTYPE L"DiskIdType"
#define CLUSREG_NAME_PHYSDISK_DISKSIGNATURE L"DiskSignature" #define CLUSREG_NAME_PHYSDISK_DISKSIGNATURE L"DiskSignature"
#define CLUSREG_NAME_PHYSDISK_DISKIDGUID L"DiskIdGuid" #define CLUSREG_NAME_PHYSDISK_DISKIDGUID L"DiskIdGuid"
#define CLUSREG_NAME_PHYSDISK_DISKRUNCHKDSK L"DiskRunChkDsk" #define CLUSREG_NAME_PHYSDISK_DISKRUNCHKDSK L"DiskRunChkDsk"
#define CLUSREG_NAME_PHYSDISK_DISKUNIQUEIDS L"DiskUniqueIds" #define CLUSREG_NAME_PHYSDISK_DISKUNIQUEIDS L"DiskUniqueIds"
#define CLUSREG_NAME_PHYSDISK_DISKVOLUMEINFO L"DiskVolumeInfo" #define CLUSREG_NAME_PHYSDISK_DISKVOLUMEINFO L"DiskVolumeInfo"
#define CLUSREG_NAME_PHYSDISK_DISKARBTYPE L"DiskArbType" #define CLUSREG_NAME_PHYSDISK_DISKARBTYPE L"DiskArbType"
#define CLUSREG_NAME_PHYSDISK_DISKARBINTERVAL L"DiskArbInterval" #define CLUSREG_NAME_PHYSDISK_DISKARBINTERVAL L"DiskArbInterval"
#define CLUSREG_NAME_PHYSDISK_DISKPATH L"DiskPath" #define CLUSREG_NAME_PHYSDISK_DISKPATH L"DiskPath"
#define CLUSREG_NAME_PHYSDISK_DISKRELOAD L"DiskReload" #define CLUSREG_NAME_PHYSDISK_DISKRELOAD L"DiskReload"
#define CLUSREG_NAME_PHYSDISK_MAINTMODE L"MainteanceMode" #define CLUSREG_NAME_PHYSDISK_MAINTMODE L"MaintenanceMode"
#define CLUSREG_NAME_PHYSDISK_DISKIODELAY L"MaxIoLatency" #define CLUSREG_NAME_PHYSDISK_DISKIODELAY L"MaxIoLatency"
#define CLUSREG_NAME_PHYSDISK_MIGRATEFIXUP L"MigrateDriveLetters" #define CLUSREG_NAME_PHYSDISK_MIGRATEFIXUP L"MigrateDriveLetters"
#define CLUSREG_NAME_PHYSDISK_CSVWRITETHROUGH L"CsvEnforceWriteThrough"
#define CLUSREG_NAME_PHYSDISK_PNPUPDATE L"DiskPnpUpdate"
// //
// Generic Application // Generic Application
// //
#define CLUSREG_NAME_GENAPP_COMMAND_LINE L"CommandLine" #define CLUSREG_NAME_GENAPP_COMMAND_LINE L"CommandLine"
#define CLUSREG_NAME_GENAPP_CURRENT_DIRECTORY L"CurrentDirectory" #define CLUSREG_NAME_GENAPP_CURRENT_DIRECTORY L"CurrentDirectory"
#define CLUSREG_NAME_GENAPP_INTERACT_WITH_DESKTOP L"InteractWithDesktop"
#define CLUSREG_NAME_GENAPP_USE_NETWORK_NAME L"UseNetworkName" #define CLUSREG_NAME_GENAPP_USE_NETWORK_NAME L"UseNetworkName"
// //
// Generic Script // Generic Script
// //
#define CLUSREG_NAME_GENSCRIPT_SCRIPT_FILEPATH L"ScriptFilepath" #define CLUSREG_NAME_GENSCRIPT_SCRIPT_FILEPATH L"ScriptFilepath"
// //
// Generic Service // Generic Service
skipping to change at line 4100 skipping to change at line 4792
#define CLUSREG_NAME_IPV6_NATIVE_NETWORK L"Network" #define CLUSREG_NAME_IPV6_NATIVE_NETWORK L"Network"
#define CLUSREG_NAME_IPV6_NATIVE_ADDRESS L"Address" #define CLUSREG_NAME_IPV6_NATIVE_ADDRESS L"Address"
#define CLUSREG_NAME_IPV6_NATIVE_PREFIX_LENGTH L"PrefixLength" #define CLUSREG_NAME_IPV6_NATIVE_PREFIX_LENGTH L"PrefixLength"
#define CLUSREG_NAME_IPV6_TUNNEL_ADDRESS L"Address" #define CLUSREG_NAME_IPV6_TUNNEL_ADDRESS L"Address"
#define CLUSREG_NAME_IPV6_TUNNEL_TUNNELTYPE L"TunnelType" #define CLUSREG_NAME_IPV6_TUNNEL_TUNNELTYPE L"TunnelType"
// //
// Network Name // Network Name
// //
#define CLUSREG_NAME_NETNAME_NAME L"Name" #define CLUSREG_NAME_NETNAME_NAME L"Name"
#define CLUSREG_NAME_NETNAME_CREATING_DC L"CreatingDC" #define CLUSREG_NAME_NETNAME_CREATING_DC L"CreatingDC"
#define CLUSREG_NAME_NETNAME_OBJECT_ID L"ObjectGUID" #define CLUSREG_NAME_NETNAME_OBJECT_ID L"ObjectGUID"
#define CLUSREG_NAME_NETNAME_DNS_NAME L"DnsName" #define CLUSREG_NAME_NETNAME_DNS_NAME L"DnsName"
#define CLUSREG_NAME_NETNAME_REMAP_PIPE_NAMES L"RemapPipeNames" #define CLUSREG_NAME_NETNAME_REMAP_PIPE_NAMES L"RemapPipeNames"
#define CLUSREG_NAME_NETNAME_RESOURCE_DATA L"ResourceData" #define CLUSREG_NAME_NETNAME_RESOURCE_DATA L"ResourceData"
#define CLUSREG_NAME_NETNAME_REQUIRE_DNS L"RequireDNS"
#define CLUSREG_NAME_NETNAME_REQUIRE_KERBEROS L"RequireKerberos"
#define CLUSREG_NAME_NETNAME_SCOPED_NAME L"ScopedName"
#define CLUSREG_NAME_NETNAME_STATUS_NETBIOS L"StatusNetBIOS" #define CLUSREG_NAME_NETNAME_STATUS_NETBIOS L"StatusNetBIOS"
#define CLUSREG_NAME_NETNAME_STATUS_DNS L"StatusDNS" #define CLUSREG_NAME_NETNAME_STATUS_DNS L"StatusDNS"
#define CLUSREG_NAME_NETNAME_STATUS_KERBEROS L"StatusKerberos" #define CLUSREG_NAME_NETNAME_STATUS_KERBEROS L"StatusKerberos"
#define CLUSREG_NAME_NETNAME_VCO_CONTAINER L"VcoContainer" #define CLUSREG_NAME_NETNAME_VCO_CONTAINER L"VcoContainer"
#define CLUSREG_NAME_NETNAME_LAST_DNS_UPDATE L"LastDNSUpdateTime" #define CLUSREG_NAME_NETNAME_LAST_DNS_UPDATE L"LastDNSUpdateTime"
#define CLUSREG_NAME_NETNAME_CONTAINERGUID L"CryptoContainerGUID" #define CLUSREG_NAME_NETNAME_CONTAINERGUID L"CryptoContainerGUID"
#define CLUSREG_NAME_NETNAME_HOST_TTL L"HostRecordTTL" #define CLUSREG_NAME_NETNAME_HOST_TTL L"HostRecordTTL"
#define CLUSREG_NAME_NETNAME_PUBLISH_PTR L"PublishPTRRecords" #define CLUSREG_NAME_NETNAME_PUBLISH_PTR L"PublishPTRRecords"
#define CLUSREG_NAME_NETNAME_REMOVEVCO_ONDELETE L"DeleteVcoOnResCleanup"
#define CLUSREG_NAME_NETNAME_REGISTER_ALL_IP L"RegisterAllProvidersIP"
#define CLUSREG_KEYNAME_OBJECTGUIDS L"ObjectGUIDs"
// //
// Print Spooler // Print Spooler
// //
#define CLUSREG_NAME_PRTSPOOL_DEFAULT_SPOOL_DIR L"DefaultSpoolDirectory" #define CLUSREG_NAME_PRTSPOOL_DEFAULT_SPOOL_DIR L"DefaultSpoolDirectory"
#define CLUSREG_NAME_PRTSPOOL_TIMEOUT L"JobCompletionTimeout" #define CLUSREG_NAME_PRTSPOOL_TIMEOUT L"JobCompletionTimeout"
// //
// File Share // File Share
skipping to change at line 4156 skipping to change at line 4847
#define CLUSREG_NAME_LOG_FILE_PATH L"LogFilePath" #define CLUSREG_NAME_LOG_FILE_PATH L"LogFilePath"
// //
// WINS Service // WINS Service
// //
#define CLUSREG_NAME_WINS_DATABASE_PATH L"DatabasePath" #define CLUSREG_NAME_WINS_DATABASE_PATH L"DatabasePath"
#define CLUSREG_NAME_WINS_BACKUP_PATH L"BackupPath" #define CLUSREG_NAME_WINS_BACKUP_PATH L"BackupPath"
// //
// Local Quorum
//
#define CLUSREG_NAME_LKQUORUM_PATH L"Path"
#define CLUSREG_NAME_LKQUORUM_DEBUG L"Debug"
//
// Volume Shadow Copy Service Task // Volume Shadow Copy Service Task
// //
#define CLUSREG_NAME_VSSTASK_CURRENTDIRECTORY L"CurrentDirectory" #define CLUSREG_NAME_VSSTASK_CURRENTDIRECTORY L"CurrentDirectory"
#define CLUSREG_NAME_VSSTASK_APPNAME L"ApplicationName" #define CLUSREG_NAME_VSSTASK_APPNAME L"ApplicationName"
#define CLUSREG_NAME_VSSTASK_APPPARAMS L"ApplicationParams" #define CLUSREG_NAME_VSSTASK_APPPARAMS L"ApplicationParams"
#define CLUSREG_NAME_VSSTASK_TRIGGERARRAY L"TriggerArray" #define CLUSREG_NAME_VSSTASK_TRIGGERARRAY L"TriggerArray"
//
// File Share Quorum Witness Resource
//
#define CLUSREG_NAME_FSWITNESS_SHARE_PATH L"SharePath"
#define CLUSREG_NAME_FSWITNESS_ARB_DELAY L"ArbitrationDelay"
#if _MSC_VER >= 1200 #if _MSC_VER >= 1200
#pragma warning(pop) // restore 4200/4201 #pragma warning(pop) // restore 4200/4201
#else #else
#pragma warning( default : 4200 ) // nonstandard extension used : zero-sized arr ay in struct/union #pragma warning( default : 4200 ) // nonstandard extension used : zero-sized arr ay in struct/union
#pragma warning( default : 4201 ) // nonstandard extension used : nameless struc t/union #pragma warning( default : 4201 ) // nonstandard extension used : nameless struc t/union
#endif #endif
#endif // MIDL_PASS #endif // MIDL_PASS
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
 End of changes. 107 change blocks. 
121 lines changed or deleted 861 lines changed or added

This html diff was produced by rfcdiff 1.41.