Headers diff for clusapi.dll between 6.3.9600.17415-Windows 8.1 and 10.0.10586.0-Windows 10 1511 10586.494 versions



 clusapi.h (6.3.9600.17415-Windows 8.1)   clusapi.h (10.0.10586.0-Windows 10 1511 10586.494) 
skipping to change at line 22 skipping to change at line 22
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_
#include <winerror.h>
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#include <winapifamily.h> #include <winapifamily.h>
#pragma region Desktop Family #pragma region Desktop Family or FailoverCluster Package
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PKG_CLUS
TER)
#define CLUSAPI_VERSION_SERVER2008 0x00000600 #define CLUSAPI_VERSION_SERVER2008 0x00000600
#define CLUSAPI_VERSION_SERVER2008R2 0x00000700 #define CLUSAPI_VERSION_SERVER2008R2 0x00000700
#define CLUSAPI_VERSION_WINDOWS8 0x00000701 #define CLUSAPI_VERSION_WINDOWS8 0x00000701
#define CLUSAPI_VERSION_WINDOWSBLUE 0x00000702 #define CLUSAPI_VERSION_WINDOWSBLUE 0x00000702
#define CLUSAPI_VERSION_WINTHRESHOLD 0x00000703
#if (!defined(CLUSAPI_VERSION)) #if (!defined(CLUSAPI_VERSION))
#if (!defined(NTDDI_VERSION) || (NTDDI_VERSION >= NTDDI_WINBLUE)) #if (!defined(NTDDI_VERSION) || (NTDDI_VERSION >= NTDDI_WINTHRESHOLD))
#define CLUSAPI_VERSION CLUSAPI_VERSION_WINTHRESHOLD
#elif (NTDDI_VERSION >= NTDDI_WINBLUE)
#define CLUSAPI_VERSION CLUSAPI_VERSION_WINDOWSBLUE #define CLUSAPI_VERSION CLUSAPI_VERSION_WINDOWSBLUE
#elif (NTDDI_VERSION >= NTDDI_WIN8) #elif (NTDDI_VERSION >= NTDDI_WIN8)
#define CLUSAPI_VERSION CLUSAPI_VERSION_WINDOWS8 #define CLUSAPI_VERSION CLUSAPI_VERSION_WINDOWS8
#elif (NTDDI_VERSION >= NTDDI_WIN7) #elif (NTDDI_VERSION >= NTDDI_WIN7)
#define CLUSAPI_VERSION CLUSAPI_VERSION_SERVER2008R2 #define CLUSAPI_VERSION CLUSAPI_VERSION_SERVER2008R2
#else #else
#define CLUSAPI_VERSION CLUSAPI_VERSION_SERVER2008 #define CLUSAPI_VERSION CLUSAPI_VERSION_SERVER2008
#endif #endif
#endif // !defined(CLUSAPI_VERSION) #endif // !defined(CLUSAPI_VERSION)
skipping to change at line 159 skipping to change at line 164
// these defines represent cluster numbers, not windows OS numbers // these defines represent cluster numbers, not windows OS numbers
#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 NT6_MAJOR_VERSION 5 #define NT6_MAJOR_VERSION 5
#define NT7_MAJOR_VERSION 6 #define NT7_MAJOR_VERSION 6
#define NT8_MAJOR_VERSION 7 #define NT8_MAJOR_VERSION 7
#define NT9_MAJOR_VERSION 8 #define NT9_MAJOR_VERSION 8
#define NT10_MAJOR_VERSION 9
// //
// 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 223 skipping to change at line 229
CLUSREG_VALUE_DELETED, CLUSREG_VALUE_DELETED,
// Commands for read batch // Commands for read batch
CLUSREG_READ_KEY, CLUSREG_READ_KEY,
CLUSREG_READ_VALUE, CLUSREG_READ_VALUE,
CLUSREG_READ_ERROR, CLUSREG_READ_ERROR,
// Control command // Control command
CLUSREG_CONTROL_COMMAND, CLUSREG_CONTROL_COMMAND,
// Write conditions
CLUSREG_CONDITION_EXISTS,
CLUSREG_CONDITION_NOT_EXISTS,
CLUSREG_CONDITION_IS_EQUAL,
CLUSREG_CONDITION_IS_NOT_EQUAL,
CLUSREG_CONDITION_IS_GREATER_THAN,
CLUSREG_CONDITION_IS_LESS_THAN,
CLUSREG_CONDITION_KEY_EXISTS,
CLUSREG_CONDITION_KEY_NOT_EXISTS,
CLUSREG_LAST_COMMAND CLUSREG_LAST_COMMAND
} CLUSTER_REG_COMMAND; } CLUSTER_REG_COMMAND;
#define CLUSREG_DATABASE_SYNC_WRITE_TO_ALL_NODES 1 #define CLUSREG_DATABASE_SYNC_WRITE_TO_ALL_NODES 1
#define CLUSREG_DATABASE_ISOLATE_READ 2
#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 typedef struct _CLUSTER_BATCH_COMMAND
skipping to change at line 298 skipping to change at line 315
ClusGroupTypeGenericService = 108, ClusGroupTypeGenericService = 108,
ClusGroupTypeGenericScript = 109, ClusGroupTypeGenericScript = 109,
ClusGroupTypeIScsiNameService = 110, ClusGroupTypeIScsiNameService = 110,
ClusGroupTypeVirtualMachine = 111, ClusGroupTypeVirtualMachine = 111,
ClusGroupTypeTsSessionBroker = 112, ClusGroupTypeTsSessionBroker = 112,
ClusGroupTypeIScsiTarget = 113, ClusGroupTypeIScsiTarget = 113,
ClusGroupTypeScaleoutFileServer = 114, ClusGroupTypeScaleoutFileServer = 114,
ClusGroupTypeVMReplicaBroker = 115, ClusGroupTypeVMReplicaBroker = 115,
ClusGroupTypeTaskScheduler = 116, ClusGroupTypeTaskScheduler = 116,
ClusGroupTypeClusterUpdateAgent = 117, ClusGroupTypeClusterUpdateAgent = 117,
ClusGroupTypeScaleoutCluster = 118,
ClusGroupTypeStorageReplica = 119,
ClusGroupTypeVMReplicaCoordinator = 120,
ClusGroupTypeUnknown = 9999 ClusGroupTypeUnknown = 9999
} CLUSGROUP_TYPE, *PCLUSGROUP_TYPE; } CLUSGROUP_TYPE, *PCLUSGROUP_TYPE;
#if CLUSAPI_VERSION >= CLUSAPI_VERSION_WINDOWS8 #if CLUSAPI_VERSION >= CLUSAPI_VERSION_WINDOWS8
#define CLUSTER_CREATE_GROUP_INFO_VERSION_1 0x00000001 #define CLUSTER_CREATE_GROUP_INFO_VERSION_1 0x00000001
#define CLUSTER_CREATE_GROUP_INFO_VERSION CLUSTER_CREATE_GROUP_INFO_VERSION_1 #define CLUSTER_CREATE_GROUP_INFO_VERSION CLUSTER_CREATE_GROUP_INFO_VERSION_1
typedef struct _CLUSTER_CREATE_GROUP_INFO { typedef struct _CLUSTER_CREATE_GROUP_INFO {
DWORD dwVersion; DWORD dwVersion;
CLUSGROUP_TYPE groupType; CLUSGROUP_TYPE groupType;
}CLUSTER_CREATE_GROUP_INFO, *PCLUSTER_CREATE_GROUP_INFO; }CLUSTER_CREATE_GROUP_INFO, *PCLUSTER_CREATE_GROUP_INFO;
#endif #endif
typedef enum typedef enum
{ {
CLUSTER_MGMT_POINT_TYPE_NONE = 0, CLUSTER_MGMT_POINT_TYPE_NONE = 0,
CLUSTER_MGMT_POINT_TYPE_CNO, CLUSTER_MGMT_POINT_TYPE_CNO,
CLUSTER_MGMT_POINT_TYPE_DNS_ONLY CLUSTER_MGMT_POINT_TYPE_DNS_ONLY,
CLUSTER_MGMT_POINT_TYPE_CNO_ONLY
} CLUSTER_MGMT_POINT_TYPE; } CLUSTER_MGMT_POINT_TYPE;
#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
#define CLUSAPI_CHANGE_ACCESS 0x00000002L #define CLUSAPI_CHANGE_ACCESS 0x00000002L
#define CLUSAPI_NO_ACCESS 0x00000004L #define CLUSAPI_NO_ACCESS 0x00000004L
#define CLUSAPI_ALL_ACCESS (CLUSAPI_READ_ACCESS | CLUSAPI_CHANGE_ACCESS) #define CLUSAPI_ALL_ACCESS (CLUSAPI_READ_ACCESS | CLUSAPI_CHANGE_ACCESS)
// //
// Cluster API Access Control Type
//
#define CLUSTER_SET_ACCESS_TYPE_ALLOWED 0 //To add an allowed ACE
#define CLUSTER_SET_ACCESS_TYPE_DENIED 1 //To add a denied ACE
#define CLUSTER_DELETE_ACCESS_CONTROL_ENTRY 2 //To delete all the ACEs for
a particular SID
//
// 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 )
// //
skipping to change at line 400 skipping to change at line 428
{ {
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;
BOOLEAN fEmptyCluster; BOOLEAN fEmptyCluster;
CLUSTER_MGMT_POINT_TYPE managementPointType; CLUSTER_MGMT_POINT_TYPE managementPointType;
} CREATE_CLUSTER_CONFIG, *PCREATE_CLUSTER_CONFIG; } CREATE_CLUSTER_CONFIG, *PCREATE_CLUSTER_CONFIG;
typedef struct _CREATE_CLUSTER_NAME_ACCOUNT
{
DWORD dwVersion;
PCWSTR lpszClusterName;
DWORD dwFlags;
PCWSTR pszUserName;
PCWSTR pszPassword;
PCWSTR pszDomain;
} CREATE_CLUSTER_NAME_ACCOUNT, *PCREATE_CLUSTER_NAME_ACCOUNT;
#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
); );
typedef DWORD typedef DWORD
skipping to change at line 609 skipping to change at line 648
_In_ HCLUSTER hCluster, _In_ HCLUSTER hCluster,
_In_opt_ HNODE hHostNode, _In_opt_ HNODE hHostNode,
_In_ DWORD dwControlCode, _In_ DWORD dwControlCode,
_In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer, _In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer,
_In_ DWORD nInBufferSize, _In_ DWORD nInBufferSize,
_Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff er, _Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff er,
_In_ DWORD nOutBufferSize, _In_ DWORD nOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned _Out_opt_ LPDWORD lpBytesReturned
); );
typedef enum _CLUSTER_UPGRADE_PHASE {
ClusterUpgradePhaseInitialize = 1,
ClusterUpgradePhaseValidatingUpgrade = 2,
ClusterUpgradePhaseUpgradingComponents = 3,
ClusterUpgradePhaseInstallingNewComponents = 4,
ClusterUpgradePhaseUpgradeComplete = 5
} CLUSTER_UPGRADE_PHASE;
typedef BOOL
(WINAPI *PCLUSTER_UPGRADE_PROGRESS_CALLBACK)(
PVOID pvCallbackArg,
CLUSTER_UPGRADE_PHASE eUpgradePhase
);
DWORD
WINAPI
ClusterUpgradeFunctionalLevel(
_In_ HCLUSTER hCluster,
_In_ BOOL perform,
_In_opt_ PCLUSTER_UPGRADE_PROGRESS_CALLBACK pfnProgressCallback,
_In_opt_ PVOID pvCallbackArg
);
typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_UPGRADE)(
_In_ HCLUSTER hCluster,
_In_ BOOL perform,
_In_opt_ PCLUSTER_UPGRADE_PROGRESS_CALLBACK pfnProgressCallback,
_In_opt_ PVOID pvCallbackArg
);
#endif // MIDL_PASS #endif // MIDL_PASS
// //
// Cluster Event Notification API // Cluster Event Notification API
// //
#ifndef _CLUSTER_API_TYPES_ #ifndef _CLUSTER_API_TYPES_
// //
// Cluster notification enums original // Cluster notification enums original
// //
skipping to change at line 719 skipping to change at line 789
CLUSTER_CHANGE_CLUSTER_GROUP_ADDED_V2 = 0x00000004, CLUSTER_CHANGE_CLUSTER_GROUP_ADDED_V2 = 0x00000004,
CLUSTER_CHANGE_CLUSTER_HANDLE_CLOSE_V2 = 0x00000008, CLUSTER_CHANGE_CLUSTER_HANDLE_CLOSE_V2 = 0x00000008,
CLUSTER_CHANGE_CLUSTER_NETWORK_ADDED_V2 = 0x00000010, CLUSTER_CHANGE_CLUSTER_NETWORK_ADDED_V2 = 0x00000010,
CLUSTER_CHANGE_CLUSTER_NODE_ADDED_V2 = 0x00000020, CLUSTER_CHANGE_CLUSTER_NODE_ADDED_V2 = 0x00000020,
CLUSTER_CHANGE_CLUSTER_RESOURCE_TYPE_ADDED_V2 = 0x00000040, CLUSTER_CHANGE_CLUSTER_RESOURCE_TYPE_ADDED_V2 = 0x00000040,
CLUSTER_CHANGE_CLUSTER_COMMON_PROPERTY_V2 = 0x00000080, CLUSTER_CHANGE_CLUSTER_COMMON_PROPERTY_V2 = 0x00000080,
CLUSTER_CHANGE_CLUSTER_PRIVATE_PROPERTY_V2 = 0x00000100, CLUSTER_CHANGE_CLUSTER_PRIVATE_PROPERTY_V2 = 0x00000100,
CLUSTER_CHANGE_CLUSTER_LOST_NOTIFICATIONS_V2 = 0x00000200, CLUSTER_CHANGE_CLUSTER_LOST_NOTIFICATIONS_V2 = 0x00000200,
CLUSTER_CHANGE_CLUSTER_RENAME_V2 = 0x00000400, CLUSTER_CHANGE_CLUSTER_RENAME_V2 = 0x00000400,
CLUSTER_CHANGE_CLUSTER_MEMBERSHIP_V2 = 0x00000800, CLUSTER_CHANGE_CLUSTER_MEMBERSHIP_V2 = 0x00000800,
CLUSTER_CHANGE_CLUSTER_UPGRADED_V2 = 0x00001000,
CLUSTER_CHANGE_CLUSTER_ALL_V2 = (CLUSTER_CHANGE_CLUSTER _RECONNECT_V2 | CLUSTER_CHANGE_CLUSTER_ALL_V2 = (CLUSTER_CHANGE_CLUSTER _RECONNECT_V2 |
CLUSTER_CHANGE_CLUSTER _STATE_V2 | CLUSTER_CHANGE_CLUSTER _STATE_V2 |
CLUSTER_CHANGE_CLUSTER _GROUP_ADDED_V2 | CLUSTER_CHANGE_CLUSTER _GROUP_ADDED_V2 |
CLUSTER_CHANGE_CLUSTER _HANDLE_CLOSE_V2 | CLUSTER_CHANGE_CLUSTER _HANDLE_CLOSE_V2 |
CLUSTER_CHANGE_CLUSTER _NETWORK_ADDED_V2 | CLUSTER_CHANGE_CLUSTER _NETWORK_ADDED_V2 |
CLUSTER_CHANGE_CLUSTER _NODE_ADDED_V2 | CLUSTER_CHANGE_CLUSTER _NODE_ADDED_V2 |
CLUSTER_CHANGE_CLUSTER _RESOURCE_TYPE_ADDED_V2 | CLUSTER_CHANGE_CLUSTER _RESOURCE_TYPE_ADDED_V2 |
CLUSTER_CHANGE_CLUSTER _COMMON_PROPERTY_V2 | CLUSTER_CHANGE_CLUSTER _COMMON_PROPERTY_V2 |
CLUSTER_CHANGE_CLUSTER _PRIVATE_PROPERTY_V2 | CLUSTER_CHANGE_CLUSTER _PRIVATE_PROPERTY_V2 |
CLUSTER_CHANGE_CLUSTER _LOST_NOTIFICATIONS_V2 | CLUSTER_CHANGE_CLUSTER _LOST_NOTIFICATIONS_V2 |
CLUSTER_CHANGE_CLUSTER _RENAME_V2 | CLUSTER_CHANGE_CLUSTER _RENAME_V2 |
CLUSTER_CHANGE_CLUSTER CLUSTER_CHANGE_CLUSTER
_MEMBERSHIP_V2) _MEMBERSHIP_V2 |
CLUSTER_CHANGE_CLUSTER
_UPGRADED_V2)
} CLUSTER_CHANGE_CLUSTER_V2; } CLUSTER_CHANGE_CLUSTER_V2;
typedef enum CLUSTER_CHANGE_GROUP_V2 { typedef enum CLUSTER_CHANGE_GROUP_V2 {
CLUSTER_CHANGE_GROUP_DELETED_V2 = 0x00000001, CLUSTER_CHANGE_GROUP_DELETED_V2 = 0x00000001,
CLUSTER_CHANGE_GROUP_COMMON_PROPERTY_V2 = 0x00000002, CLUSTER_CHANGE_GROUP_COMMON_PROPERTY_V2 = 0x00000002,
CLUSTER_CHANGE_GROUP_PRIVATE_PROPERTY_V2 = 0x00000004, CLUSTER_CHANGE_GROUP_PRIVATE_PROPERTY_V2 = 0x00000004,
CLUSTER_CHANGE_GROUP_STATE_V2 = 0x00000008, CLUSTER_CHANGE_GROUP_STATE_V2 = 0x00000008,
CLUSTER_CHANGE_GROUP_OWNER_NODE_V2 = 0x00000010, CLUSTER_CHANGE_GROUP_OWNER_NODE_V2 = 0x00000010,
CLUSTER_CHANGE_GROUP_PREFERRED_OWNERS_V2 = 0x00000020, CLUSTER_CHANGE_GROUP_PREFERRED_OWNERS_V2 = 0x00000020,
CLUSTER_CHANGE_GROUP_RESOURCE_ADDED_V2 = 0x00000040, CLUSTER_CHANGE_GROUP_RESOURCE_ADDED_V2 = 0x00000040,
skipping to change at line 787 skipping to change at line 859
CLUSTER_CHANGE_RESOURCE_ HANDLE_CLOSE_V2 | CLUSTER_CHANGE_RESOURCE_ HANDLE_CLOSE_V2 |
CLUSTER_CHANGE_RESOURCE_ TERMINAL_STATE_V2 ) CLUSTER_CHANGE_RESOURCE_ TERMINAL_STATE_V2 )
} CLUSTER_CHANGE_RESOURCE_V2; } CLUSTER_CHANGE_RESOURCE_V2;
typedef enum CLUSTER_CHANGE_RESOURCE_TYPE_V2 { typedef enum CLUSTER_CHANGE_RESOURCE_TYPE_V2 {
CLUSTER_CHANGE_RESOURCE_TYPE_DELETED_V2 = 0x00000001, CLUSTER_CHANGE_RESOURCE_TYPE_DELETED_V2 = 0x00000001,
CLUSTER_CHANGE_RESOURCE_TYPE_COMMON_PROPERTY_V2 = 0x00000002, CLUSTER_CHANGE_RESOURCE_TYPE_COMMON_PROPERTY_V2 = 0x00000002,
CLUSTER_CHANGE_RESOURCE_TYPE_PRIVATE_PROPERTY_V2 = 0x00000004, CLUSTER_CHANGE_RESOURCE_TYPE_PRIVATE_PROPERTY_V2 = 0x00000004,
CLUSTER_CHANGE_RESOURCE_TYPE_POSSIBLE_OWNERS_V2 = 0x00000008, CLUSTER_CHANGE_RESOURCE_TYPE_POSSIBLE_OWNERS_V2 = 0x00000008,
CLUSTER_CHANGE_RESOURCE_TYPE_DLL_UPGRADED_V2 = 0x00000010, CLUSTER_CHANGE_RESOURCE_TYPE_DLL_UPGRADED_V2 = 0x00000010,
CLUSTER_RESOURCE_TYPE_SPECIFIC_V2 = 0x00000020,
CLUSTER_CHANGE_RESOURCE_TYPE_ALL_V2 = (CLUSTER_CHANGE_RESO URCE_TYPE_DELETED_V2 | CLUSTER_CHANGE_RESOURCE_TYPE_ALL_V2 = (CLUSTER_CHANGE_RESO URCE_TYPE_DELETED_V2 |
CLUSTER_CHANGE_RESO URCE_TYPE_COMMON_PROPERTY_V2 | CLUSTER_CHANGE_RESO URCE_TYPE_COMMON_PROPERTY_V2 |
CLUSTER_CHANGE_RESO URCE_TYPE_PRIVATE_PROPERTY_V2 | CLUSTER_CHANGE_RESO URCE_TYPE_PRIVATE_PROPERTY_V2 |
CLUSTER_CHANGE_RESO URCE_TYPE_POSSIBLE_OWNERS_V2 | CLUSTER_CHANGE_RESO URCE_TYPE_POSSIBLE_OWNERS_V2 |
CLUSTER_CHANGE_RESO CLUSTER_CHANGE_RESO
URCE_TYPE_DLL_UPGRADED_V2) URCE_TYPE_DLL_UPGRADED_V2 |
CLUSTER_RESOURCE_TY
PE_SPECIFIC_V2)
} CLUSTER_CHANGE_RESOURCE_TYPE_V2; } CLUSTER_CHANGE_RESOURCE_TYPE_V2;
typedef enum CLUSTER_CHANGE_NETINTERFACE_V2 { typedef enum CLUSTER_CHANGE_NETINTERFACE_V2 {
CLUSTER_CHANGE_NETINTERFACE_DELETED_V2 = 0x00000001, CLUSTER_CHANGE_NETINTERFACE_DELETED_V2 = 0x00000001,
CLUSTER_CHANGE_NETINTERFACE_COMMON_PROPERTY_V2 = 0x00000002, CLUSTER_CHANGE_NETINTERFACE_COMMON_PROPERTY_V2 = 0x00000002,
CLUSTER_CHANGE_NETINTERFACE_PRIVATE_PROPERTY_V2 = 0x00000004, CLUSTER_CHANGE_NETINTERFACE_PRIVATE_PROPERTY_V2 = 0x00000004,
CLUSTER_CHANGE_NETINTERFACE_STATE_V2 = 0x00000008, CLUSTER_CHANGE_NETINTERFACE_STATE_V2 = 0x00000008,
CLUSTER_CHANGE_NETINTERFACE_HANDLE_CLOSE_V2 = 0x00000010, CLUSTER_CHANGE_NETINTERFACE_HANDLE_CLOSE_V2 = 0x00000010,
CLUSTER_CHANGE_NETINTERFACE_ALL_V2 = (CLUSTER_CHANGE_NETIN TERFACE_DELETED_V2 | CLUSTER_CHANGE_NETINTERFACE_ALL_V2 = (CLUSTER_CHANGE_NETIN TERFACE_DELETED_V2 |
CLUSTER_CHANGE_NETIN TERFACE_COMMON_PROPERTY_V2 | CLUSTER_CHANGE_NETIN TERFACE_COMMON_PROPERTY_V2 |
skipping to change at line 870 skipping to change at line 944
CLUSTER_CHANGE_SHARED_VOLUME_REMOVED_V2 = 0x00000004, CLUSTER_CHANGE_SHARED_VOLUME_REMOVED_V2 = 0x00000004,
CLUSTER_CHANGE_SHARED_VOLUME_ALL_V2 = (CLUSTER_CHANGE_SHARED_VOLUME_STAT E_V2 | CLUSTER_CHANGE_SHARED_VOLUME_ALL_V2 = (CLUSTER_CHANGE_SHARED_VOLUME_STAT E_V2 |
CLUSTER_CHANGE_SHARED_VOLUME_ADDE D_V2 | CLUSTER_CHANGE_SHARED_VOLUME_ADDE D_V2 |
CLUSTER_CHANGE_SHARED_VOLUME_REMO VED_V2) CLUSTER_CHANGE_SHARED_VOLUME_REMO VED_V2)
} CLUSTER_CHANGE_SHARED_VOLUME_V2; } CLUSTER_CHANGE_SHARED_VOLUME_V2;
typedef enum CLUSTER_CHANGE_SPACEPORT_V2 { typedef enum CLUSTER_CHANGE_SPACEPORT_V2 {
CLUSTER_CHANGE_SPACEPORT_CUSTOM_PNP_V2 = 0x00000001, CLUSTER_CHANGE_SPACEPORT_CUSTOM_PNP_V2 = 0x00000001,
} CLUSTER_CHANGE_SPACEPORT_V2; } CLUSTER_CHANGE_SPACEPORT_V2;
typedef enum CLUSTER_CHANGE_NODE_UPGRADE_PHASE_V2 {
CLUSTER_CHANGE_UPGRADE_NODE_PREPARE = 0x00000001,
CLUSTER_CHANGE_UPGRADE_NODE_COMMIT = 0x00000002,
CLUSTER_CHANGE_UPGRADE_NODE_POSTCOMMIT = 0x00000004,
CLUSTER_CHANGE_UPGRADE_ALL = (CLUSTER_CHANGE_UPGRADE_NODE_PREPA
RE |
CLUSTER_CHANGE_UPGRADE_NODE_COMMI
T |
CLUSTER_CHANGE_UPGRADE_NODE_POSTC
OMMIT)
} CLUSTER_CHANGE_NODE_UPGRADE_PHASE_V2;
typedef enum CLUSTER_OBJECT_TYPE { typedef enum CLUSTER_OBJECT_TYPE {
CLUSTER_OBJECT_TYPE_NONE = 0x00000000, CLUSTER_OBJECT_TYPE_NONE = 0x00000000,
CLUSTER_OBJECT_TYPE_CLUSTER = 0x00000001, CLUSTER_OBJECT_TYPE_CLUSTER = 0x00000001,
CLUSTER_OBJECT_TYPE_GROUP = 0x00000002, CLUSTER_OBJECT_TYPE_GROUP = 0x00000002,
CLUSTER_OBJECT_TYPE_RESOURCE = 0x00000003, CLUSTER_OBJECT_TYPE_RESOURCE = 0x00000003,
CLUSTER_OBJECT_TYPE_RESOURCE_TYPE = 0x00000004, CLUSTER_OBJECT_TYPE_RESOURCE_TYPE = 0x00000004,
CLUSTER_OBJECT_TYPE_NETWORK_INTERFACE = 0x00000005, CLUSTER_OBJECT_TYPE_NETWORK_INTERFACE = 0x00000005,
CLUSTER_OBJECT_TYPE_NETWORK = 0x00000006, CLUSTER_OBJECT_TYPE_NETWORK = 0x00000006,
CLUSTER_OBJECT_TYPE_NODE = 0x00000007, CLUSTER_OBJECT_TYPE_NODE = 0x00000007,
CLUSTER_OBJECT_TYPE_REGISTRY = 0x00000008, CLUSTER_OBJECT_TYPE_REGISTRY = 0x00000008,
skipping to change at line 1267 skipping to change at line 1350
typedef enum CLUSTER_NODE_DRAIN_STATUS { typedef enum CLUSTER_NODE_DRAIN_STATUS {
NodeDrainStatusNotInitiated = 0, NodeDrainStatusNotInitiated = 0,
NodeDrainStatusInProgress, NodeDrainStatusInProgress,
NodeDrainStatusCompleted, NodeDrainStatusCompleted,
NodeDrainStatusFailed, NodeDrainStatusFailed,
ClusterNodeDrainStatusCount ClusterNodeDrainStatusCount
} CLUSTER_NODE_DRAIN_STATUS; } CLUSTER_NODE_DRAIN_STATUS;
#endif //CLUSAPI_VERSION >= CLUSAPI_VERSION_WINDOWS8 #endif //CLUSAPI_VERSION >= CLUSAPI_VERSION_WINDOWS8
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINTHRESHOLD)
typedef enum CLUSTER_NODE_STATUS
{
NodeStatusNormal = 0x0,
NodeStatusIsolated = 0x1,
NodeStatusQuarantined = 0x2,
NodeStatusDrainInProgress = 0x4,
NodeStatusDrainCompleted = 0x8,
NodeStatusDrainFailed = 0x10,
NodeStatusMax = (NodeStatusIsolated | NodeStatusQuara
ntined | NodeStatusDrainFailed)
} CLUSTER_NODE_STATUS;
#endif //CLUSAPI_VERSION >= CLUSAPI_VERSION_WINTHRESHOLD
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
// //
// Interfaces for managing the nodes of a cluster. // Interfaces for managing the nodes of a cluster.
// //
#if ( !MIDL_PASS && !__midl ) #if ( !MIDL_PASS && !__midl )
HNODE HNODE
WINAPI WINAPI
OpenClusterNode( OpenClusterNode(
skipping to change at line 1727 skipping to change at line 1825
// Group StatusInformation Flags; These flags are set only by Cluster Service On ly; // Group StatusInformation Flags; These flags are set only by Cluster Service On ly;
#define CLUSGRP_STATUS_LOCKED_MODE 0 x0000000000000001 #define CLUSGRP_STATUS_LOCKED_MODE 0 x0000000000000001
#define CLUSGRP_STATUS_PREEMPTED 0 x0000000000000002 #define CLUSGRP_STATUS_PREEMPTED 0 x0000000000000002
#define CLUSGRP_STATUS_WAITING_IN_QUEUE_FOR_MOVE 0 x0000000000000004 #define CLUSGRP_STATUS_WAITING_IN_QUEUE_FOR_MOVE 0 x0000000000000004
#define CLUSGRP_STATUS_PHYSICAL_RESOURCES_LACKING 0 x0000000000000008 #define CLUSGRP_STATUS_PHYSICAL_RESOURCES_LACKING 0 x0000000000000008
#define CLUSGRP_STATUS_WAITING_TO_START 0 x0000000000000010 #define CLUSGRP_STATUS_WAITING_TO_START 0 x0000000000000010
#define CLUSGRP_STATUS_EMBEDDED_FAILURE 0 x0000000000000020 #define CLUSGRP_STATUS_EMBEDDED_FAILURE 0 x0000000000000020
#define CLUSGRP_STATUS_OFFLINE_DUE_TO_ANTIAFFINITY_CONFLICT 0 x0000000000000040 #define CLUSGRP_STATUS_OFFLINE_DUE_TO_ANTIAFFINITY_CONFLICT 0 x0000000000000040
#define CLUSGRP_STATUS_NETWORK_FAILURE 0 x0000000000000080 #define CLUSGRP_STATUS_NETWORK_FAILURE 0 x0000000000000080
#define CLUSGRP_STATUS_UNMONITORED 0 x0000000000000100
HGROUP HGROUP
WINAPI WINAPI
CreateClusterGroupEx( CreateClusterGroupEx(
_In_ HCLUSTER hCluster, _In_ HCLUSTER hCluster,
_In_ LPCWSTR lpszGroupName, _In_ LPCWSTR lpszGroupName,
_In_opt_ PCLUSTER_CREATE_GROUP_INFO pGroupInfo _In_opt_ PCLUSTER_CREATE_GROUP_INFO pGroupInfo
); );
typedef HGROUP typedef HGROUP
skipping to change at line 1810 skipping to change at line 1909
_In_ HGROUPENUMEX hGroupEnumEx _In_ HGROUPENUMEX hGroupEnumEx
); );
// Resource StatusInformation Flags; These are set by Cluster Service Only; // Resource StatusInformation Flags; These are set by Cluster Service Only;
#define CLUSRES_STATUS_LOCKED_MODE 0 x0000000000000001 #define CLUSRES_STATUS_LOCKED_MODE 0 x0000000000000001
#define CLUSRES_STATUS_EMBEDDED_FAILURE 0 x0000000000000002 #define CLUSRES_STATUS_EMBEDDED_FAILURE 0 x0000000000000002
#define CLUSRES_STATUS_FAILED_DUE_TO_INSUFFICIENT_CPU 0 x0000000000000004 #define CLUSRES_STATUS_FAILED_DUE_TO_INSUFFICIENT_CPU 0 x0000000000000004
#define CLUSRES_STATUS_FAILED_DUE_TO_INSUFFICIENT_MEMORY 0 x0000000000000008 #define CLUSRES_STATUS_FAILED_DUE_TO_INSUFFICIENT_MEMORY 0 x0000000000000008
#define CLUSRES_STATUS_FAILED_DUE_TO_INSUFFICIENT_GENERIC_RESOURCES 0 x0000000000000010 #define CLUSRES_STATUS_FAILED_DUE_TO_INSUFFICIENT_GENERIC_RESOURCES 0 x0000000000000010
#define CLUSRES_STATUS_NETWORK_FAILURE 0 x0000000000000020 #define CLUSRES_STATUS_NETWORK_FAILURE 0 x0000000000000020
#define CLUSRES_STATUS_UNMONITORED 0 x0000000000000040
HRESENUMEX HRESENUMEX
WINAPI WINAPI
ClusterResourceOpenEnumEx( ClusterResourceOpenEnumEx(
_In_ HCLUSTER hCluster, _In_ HCLUSTER hCluster,
_In_reads_bytes_opt_(cbProperties)LPCWSTR lpszProperties, _In_reads_bytes_opt_(cbProperties)LPCWSTR lpszProperties,
_In_ DWORD cbProperties, _In_ DWORD cbProperties,
_In_reads_bytes_opt_(cbRoProperties) LPCWSTR lpszRoProperties, _In_reads_bytes_opt_(cbRoProperties) LPCWSTR lpszRoProperties,
_In_ DWORD cbRoProperties, _In_ DWORD cbRoProperties,
_In_ DWORD dwFlags _In_ DWORD dwFlags
skipping to change at line 1872 skipping to change at line 1972
ClusterResourceCloseEnumEx( ClusterResourceCloseEnumEx(
_In_ HRESENUMEX hResourceEnumEx _In_ HRESENUMEX hResourceEnumEx
); );
typedef DWORD typedef DWORD
(WINAPI * PCLUSAPI_CLUSTER_RESOURCE_CLOSE_ENUM_EX)( (WINAPI * PCLUSAPI_CLUSTER_RESOURCE_CLOSE_ENUM_EX)(
_In_ HRESENUMEX hResourceEnumEx _In_ HRESENUMEX hResourceEnumEx
); );
#define CLUSAPI_GROUP_ONLINE_IGNORE_RESOURCE_STATUS 0x00000001 #define CLUSAPI_GROUP_ONLINE_IGNORE_RESOURCE_STATUS 0x00000001
#define CLUSAPI_GROUP_ONLINE_SYNCHRONOUS 0x00000002
DWORD WINAPI OnlineClusterGroupEx( DWORD WINAPI OnlineClusterGroupEx(
_In_ HGROUP hGroup, _In_ HGROUP hGroup,
_In_opt_ HNODE hDestinationNode, _In_opt_ HNODE hDestinationNode,
_In_ DWORD dwOnlineFlags, _In_ DWORD dwOnlineFlags,
_In_reads_bytes_opt_(cbInBufferSize) PBYTE lpInBuffer, _In_reads_bytes_opt_(cbInBufferSize) PBYTE lpInBuffer,
_In_ DWORD cbInBufferSize _In_ DWORD cbInBufferSize
); );
#define CLUSAPI_GROUP_OFFLINE_IGNORE_RESOURCE_STATUS 0x00000001 #define CLUSAPI_GROUP_OFFLINE_IGNORE_RESOURCE_STATUS 0x00000001
skipping to change at line 2537 skipping to change at line 2638
_In_reads_bytes_opt_(cbInBufferSize) LPVOID lpInBuffer, _In_reads_bytes_opt_(cbInBufferSize) LPVOID lpInBuffer,
_In_ DWORD cbInBufferSize, _In_ DWORD cbInBufferSize,
_Out_writes_bytes_to_opt_(cbOutBufferSize, *lpBytesReturned) LPVOID lpOutBuf fer, _Out_writes_bytes_to_opt_(cbOutBufferSize, *lpBytesReturned) LPVOID lpOutBuf fer,
_In_ DWORD cbOutBufferSize, _In_ DWORD cbOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned _Out_opt_ LPDWORD lpBytesReturned
); );
_Success_(return == ERROR_SUCCESS) _Success_(return == ERROR_SUCCESS)
DWORD DWORD
WINAPI WINAPI
ClusterResourceControlAsUser(
_In_ HRESOURCE hResource,
_In_opt_ HNODE hHostNode,
_In_ DWORD dwControlCode,
_In_reads_bytes_opt_(cbInBufferSize) LPVOID lpInBuffer,
_In_ DWORD cbInBufferSize,
_Out_writes_bytes_to_opt_(cbOutBufferSize, *lpBytesReturned) LPVOID lpOutBuf
fer,
_In_ DWORD cbOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned
);
_Success_(return == ERROR_SUCCESS)
DWORD
WINAPI
ClusterResourceTypeControl( ClusterResourceTypeControl(
_In_ HCLUSTER hCluster, _In_ HCLUSTER hCluster,
_In_ LPCWSTR lpszResourceTypeName, _In_ LPCWSTR lpszResourceTypeName,
_In_opt_ HNODE hHostNode, _In_opt_ HNODE hHostNode,
_In_ DWORD dwControlCode, _In_ DWORD dwControlCode,
_In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer, _In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer,
_In_ DWORD nInBufferSize, _In_ DWORD nInBufferSize,
_Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff er, _Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff er,
_In_ DWORD nOutBufferSize, _In_ DWORD nOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned _Out_opt_ LPDWORD lpBytesReturned
skipping to change at line 2565 skipping to change at line 2680
_In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer, _In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer,
_In_ DWORD nInBufferSize, _In_ DWORD nInBufferSize,
_Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff er, _Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff er,
_In_ DWORD nOutBufferSize, _In_ DWORD nOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned _Out_opt_ LPDWORD lpBytesReturned
); );
_Success_(return == ERROR_SUCCESS) _Success_(return == ERROR_SUCCESS)
DWORD DWORD
WINAPI WINAPI
ClusterResourceTypeControlAsUser(
_In_ HCLUSTER hCluster,
_In_ LPCWSTR lpszResourceTypeName,
_In_opt_ HNODE hHostNode,
_In_ DWORD dwControlCode,
_In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer,
_In_ DWORD nInBufferSize,
_Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff
er,
_In_ DWORD nOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned
);
_Success_(return == ERROR_SUCCESS)
DWORD
WINAPI
ClusterGroupControl( ClusterGroupControl(
_In_ HGROUP hGroup, _In_ HGROUP hGroup,
_In_opt_ HNODE hHostNode, _In_opt_ HNODE hHostNode,
_In_ DWORD dwControlCode, _In_ DWORD dwControlCode,
_In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer, _In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer,
_In_ DWORD nInBufferSize, _In_ DWORD nInBufferSize,
_Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff er, _Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuff er,
_In_ DWORD nOutBufferSize, _In_ DWORD nOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned _Out_opt_ LPDWORD lpBytesReturned
); );
skipping to change at line 2656 skipping to change at line 2786
CLUSPROP_TYPE_NAME, CLUSPROP_TYPE_NAME,
CLUSPROP_TYPE_SIGNATURE, CLUSPROP_TYPE_SIGNATURE,
CLUSPROP_TYPE_SCSI_ADDRESS, CLUSPROP_TYPE_SCSI_ADDRESS,
CLUSPROP_TYPE_DISK_NUMBER, CLUSPROP_TYPE_DISK_NUMBER,
CLUSPROP_TYPE_PARTITION_INFO, CLUSPROP_TYPE_PARTITION_INFO,
CLUSPROP_TYPE_FTSET_INFO, CLUSPROP_TYPE_FTSET_INFO,
CLUSPROP_TYPE_DISK_SERIALNUMBER, CLUSPROP_TYPE_DISK_SERIALNUMBER,
CLUSPROP_TYPE_DISK_GUID, CLUSPROP_TYPE_DISK_GUID,
CLUSPROP_TYPE_DISK_SIZE, CLUSPROP_TYPE_DISK_SIZE,
CLUSPROP_TYPE_PARTITION_INFO_EX, CLUSPROP_TYPE_PARTITION_INFO_EX,
CLUSPROP_TYPE_PARTITION_INFO_EX2,
CLUSPROP_TYPE_STORAGE_DEVICE_ID_DESCRIPTOR,
CLUSPROP_TYPE_USER=32768 CLUSPROP_TYPE_USER=32768
} CLUSTER_PROPERTY_TYPE; } CLUSTER_PROPERTY_TYPE;
// //
// Cluster Control Property Data - Formats (a WORD) // Cluster Control Property Data - Formats (a WORD)
// //
typedef enum CLUSTER_PROPERTY_FORMAT { typedef enum CLUSTER_PROPERTY_FORMAT {
CLUSPROP_FORMAT_UNKNOWN = 0, CLUSPROP_FORMAT_UNKNOWN = 0,
CLUSPROP_FORMAT_BINARY, CLUSPROP_FORMAT_BINARY,
skipping to change at line 2709 skipping to change at line 2841
CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_EXPAND_SZ ), CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_EXPAND_SZ ),
CLUSPROP_SYNTAX_LIST_VALUE_DWORD = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_DWORD ), CLUSPROP_SYNTAX_LIST_VALUE_DWORD = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_DWORD ),
CLUSPROP_SYNTAX_LIST_VALUE_BINARY = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_BINARY ), CLUSPROP_SYNTAX_LIST_VALUE_BINARY = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_BINARY ),
CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_MULTI_SZ ), CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_MULTI_SZ ),
CLUSPROP_SYNTAX_LIST_VALUE_LONG = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_LONG ), CLUSPROP_SYNTAX_LIST_VALUE_LONG = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_LONG ),
CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_EXPANDED_SZ ), CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_EXPANDED_SZ ),
CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_SECURITY_DESCRIPTOR ), CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_SECURITY_DESCRIPTOR ),
CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_LARGE_INTEGER ), CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_LARGE_INTEGER ),
CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_ULARGE_INTEGER ), CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_ULARGE_INTEGER ),
CLUSPROP_SYNTAX_LIST_VALUE_WORD = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_WORD ), CLUSPROP_SYNTAX_LIST_VALUE_WORD = CLUSPROP_SYNTAX_VALUE( CLU SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_WORD ),
CLUSPROP_SYNTAX_LIST_VALUE_PROPERTY_LIST = CLUSPROP_SYNTAX_VALUE( CLU
SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_PROPERTY_LIST ),
CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = CLUSPROP_SYNTAX_VALUE( CLU
SPROP_TYPE_LIST_VALUE, CLUSPROP_FORMAT_FILETIME ),
// Storage syntax values // Storage syntax values
CLUSPROP_SYNTAX_DISK_SIGNATURE = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ SIGNATURE, CLUSPROP_FORMAT_DWORD ), CLUSPROP_SYNTAX_DISK_SIGNATURE = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ SIGNATURE, CLUSPROP_FORMAT_DWORD ),
CLUSPROP_SYNTAX_SCSI_ADDRESS = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ SCSI_ADDRESS, CLUSPROP_FORMAT_DWORD ), CLUSPROP_SYNTAX_SCSI_ADDRESS = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ SCSI_ADDRESS, CLUSPROP_FORMAT_DWORD ),
CLUSPROP_SYNTAX_DISK_NUMBER = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ DISK_NUMBER, CLUSPROP_FORMAT_DWORD ), CLUSPROP_SYNTAX_DISK_NUMBER = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ DISK_NUMBER, CLUSPROP_FORMAT_DWORD ),
CLUSPROP_SYNTAX_PARTITION_INFO = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ PARTITION_INFO, CLUSPROP_FORMAT_BINARY ), CLUSPROP_SYNTAX_PARTITION_INFO = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ PARTITION_INFO, CLUSPROP_FORMAT_BINARY ),
CLUSPROP_SYNTAX_FTSET_INFO = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ FTSET_INFO, CLUSPROP_FORMAT_BINARY ), CLUSPROP_SYNTAX_FTSET_INFO = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ FTSET_INFO, CLUSPROP_FORMAT_BINARY ),
CLUSPROP_SYNTAX_DISK_SERIALNUMBER = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ DISK_SERIALNUMBER, CLUSPROP_FORMAT_SZ ), CLUSPROP_SYNTAX_DISK_SERIALNUMBER = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ DISK_SERIALNUMBER, CLUSPROP_FORMAT_SZ ),
CLUSPROP_SYNTAX_DISK_GUID = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ DISK_GUID, CLUSPROP_FORMAT_SZ ), CLUSPROP_SYNTAX_DISK_GUID = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ DISK_GUID, CLUSPROP_FORMAT_SZ ),
CLUSPROP_SYNTAX_DISK_SIZE = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ DISK_SIZE, CLUSPROP_FORMAT_ULARGE_INTEGER ), CLUSPROP_SYNTAX_DISK_SIZE = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ DISK_SIZE, CLUSPROP_FORMAT_ULARGE_INTEGER ),
CLUSPROP_SYNTAX_PARTITION_INFO_EX = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ PARTITION_INFO_EX, CLUSPROP_FORMAT_BINARY ), CLUSPROP_SYNTAX_PARTITION_INFO_EX = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ PARTITION_INFO_EX, CLUSPROP_FORMAT_BINARY ),
CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_ CLUSPROP_SYNTAX_PARTITION_INFO_EX2 = CLUSPROP_SYNTAX_VALUE( CLUSPROP_TYPE_
LIST_VALUE, CLUSPROP_FORMAT_FILETIME ), PARTITION_INFO_EX2, CLUSPROP_FORMAT_BINARY ),
CLUSPROP_SYNTAX_STORAGE_DEVICE_ID_DESCRIPTOR = CLUSPROP_SYNTAX_VALUE( CLUSPR
OP_TYPE_STORAGE_DEVICE_ID_DESCRIPTOR, CLUSPROP_FORMAT_BINARY ),
} CLUSTER_PROPERTY_SYNTAX; } CLUSTER_PROPERTY_SYNTAX;
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINDOWS8) #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINDOWS8)
#define GROUP_FAILURE_INFO_VERSION_1 0x1 #define GROUP_FAILURE_INFO_VERSION_1 0x1
typedef struct GROUP_FAILURE_INFO { typedef struct GROUP_FAILURE_INFO {
skipping to change at line 2908 skipping to change at line 3043
CLCTL_DELETE_CRYPTO_CHECKPOINT = CLCTL_EXTERNAL_CODE( 44, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_DELETE_CRYPTO_CHECKPOINT = CLCTL_EXTERNAL_CODE( 44, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_GET_CRYPTO_CHECKPOINTS = CLCTL_EXTERNAL_CODE( 45, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ), CLCTL_GET_CRYPTO_CHECKPOINTS = CLCTL_EXTERNAL_CODE( 45, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ),
CLCTL_RESOURCE_UPGRADE_DLL = CLCTL_EXTERNAL_CODE( 46, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_RESOURCE_UPGRADE_DLL = CLCTL_EXTERNAL_CODE( 46, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_ADD_REGISTRY_CHECKPOINT_64BIT = CLCTL_EXTERNAL_CODE( 47, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_ADD_REGISTRY_CHECKPOINT_64BIT = CLCTL_EXTERNAL_CODE( 47, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_ADD_REGISTRY_CHECKPOINT_32BIT = CLCTL_EXTERNAL_CODE( 48, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_ADD_REGISTRY_CHECKPOINT_32BIT = CLCTL_EXTERNAL_CODE( 48, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
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_SET_ACCOUNT_ACCESS = CLCTL_EXTERNAL_CODE( 60, CLUS_ACCE
SS_WRITE, CLUS_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_RESET_VCO = CLCTL_EXTERNAL_CODE( 97, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ),
CLCTL_NETNAME_REPAIR_VCO = CLCTL_EXTERNAL_CODE( 99, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ), CLCTL_NETNAME_REPAIR_VCO = CLCTL_EXTERNAL_CODE( 99, CLUS_ACCE SS_READ, CLUS_NO_MODIFY ),
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_SYNC_CLUSDISK_DB = CLCTL_EXTERNAL_CODE( 103, CLUS_ACC ESS_WRITE, CLUS_MODIFY ), CLCTL_STORAGE_SYNC_CLUSDISK_DB = CLCTL_EXTERNAL_CODE( 103, CLUS_ACC ESS_WRITE, CLUS_MODIFY ),
CLCTL_STORAGE_GET_DISK_NUMBER_INFO = CLCTL_EXTERNAL_CODE( 104, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
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_GET_DISK_INFO_EX2 = CLCTL_EXTERNAL_CODE( 126, CLUS_AC
CESS_READ, CLUS_NO_MODIFY ),
// Code 127 is available for storage after some others were re-numbered
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_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_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_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 ), CLCTL_STORAGE_GET_MOUNTPOINTS = CLCTL_EXTERNAL_CODE( 132, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_GET_DIRTY = CLCTL_EXTERNAL_CODE( 134, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), 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. // 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_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_STORAGE_IS_CSV_FILE = CLCTL_EXTERNAL_CODE( 138, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_STORAGE_GET_RESOURCEID = CLCTL_EXTERNAL_CODE( 139, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_GET_RESOURCEID = CLCTL_EXTERNAL_CODE( 139, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
skipping to change at line 2986 skipping to change at line 3127
CLCTL_GET_GUM_LOCK_OWNER = CLCTL_EXTERNAL_CODE( 174, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ), CLCTL_GET_GUM_LOCK_OWNER = CLCTL_EXTERNAL_CODE( 174, CLUS_ACC ESS_READ, CLUS_NO_MODIFY ),
CLCTL_GET_STUCK_NODES = CLCTL_EXTERNAL_CODE( 175, CLUS_ACC ESS_READ, CLUS_NO_MODIFY), CLCTL_GET_STUCK_NODES = CLCTL_EXTERNAL_CODE( 175, CLUS_ACC ESS_READ, CLUS_NO_MODIFY),
CLCTL_INJECT_GEM_FAULT = CLCTL_EXTERNAL_CODE( 176, CLUS_ACCE SS_READ, CLUS_NO_MODIFY), CLCTL_INJECT_GEM_FAULT = CLCTL_EXTERNAL_CODE( 176, CLUS_ACCE SS_READ, CLUS_NO_MODIFY),
CLCTL_INTRODUCE_GEM_REPAIR_DELAY = CLCTL_EXTERNAL_CODE( 177, CLUS_ACC ESS_READ, CLUS_NO_MODIFY), CLCTL_INTRODUCE_GEM_REPAIR_DELAY = CLCTL_EXTERNAL_CODE( 177, CLUS_ACC ESS_READ, CLUS_NO_MODIFY),
CLCTL_SEND_DUMMY_GEM_MESSAGES = CLCTL_EXTERNAL_CODE( 178, CLUS_ACC ESS_READ, CLUS_NO_MODIFY), CLCTL_SEND_DUMMY_GEM_MESSAGES = CLCTL_EXTERNAL_CODE( 178, CLUS_ACC ESS_READ, CLUS_NO_MODIFY),
CLCTL_BLOCK_GEM_SEND_RECV = CLCTL_EXTERNAL_CODE( 179, CLUS_ACCE SS_READ, CLUS_NO_MODIFY), CLCTL_BLOCK_GEM_SEND_RECV = CLCTL_EXTERNAL_CODE( 179, CLUS_ACCE SS_READ, CLUS_NO_MODIFY),
CLCTL_GET_GEMID_VECTOR = CLCTL_EXTERNAL_CODE( 180, CLUS_ACC ESS_READ, CLUS_NO_MODIFY), CLCTL_GET_GEMID_VECTOR = CLCTL_EXTERNAL_CODE( 180, CLUS_ACC ESS_READ, CLUS_NO_MODIFY),
CLCTL_ADD_CRYPTO_CHECKPOINT_EX = CLCTL_EXTERNAL_CODE( 181, CLUS_ACC ESS_WRITE, CLUS_MODIFY ), CLCTL_ADD_CRYPTO_CHECKPOINT_EX = CLCTL_EXTERNAL_CODE( 181, CLUS_ACC ESS_WRITE, CLUS_MODIFY ),
// gets the last time the group moved
CLCTL_GROUP_GET_LAST_MOVE_TIME = CLCTL_EXTERNAL_CODE( 182, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_SET_STORAGE_CONFIGURATION = CLCTL_EXTERNAL_CODE( 184, CLUS_ACC
ESS_WRITE, CLUS_MODIFY ),
CLCTL_GET_STORAGE_CONFIGURATION = CLCTL_EXTERNAL_CODE( 185, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_GET_STORAGE_CONFIG_ATTRIBUTES = CLCTL_EXTERNAL_CODE( 186, CLUS_ACC
ESS_READ, CLUS_NO_MODIFY ),
CLCTL_REMOVE_NODE = CLCTL_EXTERNAL_CODE( 187, CLUS_ACC
ESS_WRITE, CLUS_MODIFY ),
// Control codes 2000 to 2999 are reserved. // Control codes 2000 to 2999 are reserved.
CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX2_INT = CLCTL_EXTERNAL_CODE( 2040, CLU S_ACCESS_READ, CLUS_NO_MODIFY ), CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX2_INT = CLCTL_EXTERNAL_CODE( 2040, CLU S_ACCESS_READ, CLUS_NO_MODIFY ),
// //
// Cloud Witness Controls
//
// takes in a property list of AccountName, PrimaryToken
CLCTL_CLOUD_WITNESS_RESOURCE_TYPE_VALIDATE_CREDENTIALS = CLCTL_EXTERNAL_CODE
( 2104, CLUS_ACCESS_READ, CLUS_NO_MODIFY ),
// takes in a proeprty list of PrimaryToken
CLCTL_CLOUD_WITNESS_RESOURCE_UPDATE_TOKEN = CLCTL_EXTERNAL_CODE( 2105, CLUS
_ACCESS_WRITE, CLUS_MODIFY ),
//
// Rolling upgrade controls
//
CLCTL_RESOURCE_PREPARE_UPGRADE = CLCTL_EXTERNAL_CODE( 2106, CLUS
_ACCESS_WRITE, CLUS_MODIFY ),
CLCTL_RESOURCE_UPGRADE_COMPLETED = CLCTL_EXTERNAL_CODE( 2107, CLUS
_ACCESS_WRITE, CLUS_MODIFY ),
//
// Storage Replication
//
CLCTL_REPLICATION_GET_LOG_INFO = CLCTL_EXTERNAL_CODE(2129
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
CLCTL_REPLICATION_GET_ELIGIBLE_LOGDISKS = CLCTL_EXTERNAL_CODE(2130
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
CLCTL_REPLICATION_GET_ELIGIBLE_TARGET_DATADISKS = CLCTL_EXTERNAL_CODE(2131
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
CLCTL_REPLICATION_GET_ELIGIBLE_SOURCE_DATADISKS = CLCTL_EXTERNAL_CODE(2132
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
CLCTL_REPLICATION_GET_REPLICATED_DISKS = CLCTL_EXTERNAL_CODE(2133
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
CLCTL_REPLICATION_GET_REPLICA_VOLUMES = CLCTL_EXTERNAL_CODE(2134
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
CLCTL_REPLICATION_GET_LOG_VOLUME = CLCTL_EXTERNAL_CODE(2135
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
CLCTL_REPLICATION_GET_RESOURCE_GROUP = CLCTL_EXTERNAL_CODE(2136
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
CLCTL_REPLICATION_GET_REPLICATED_PARTITION_INFO = CLCTL_EXTERNAL_CODE(2137
, CLUS_ACCESS_READ, CLUS_NO_MODIFY),
// Get Filetime of last state change
CLCTL_GET_STATE_CHANGE_TIME = CLCTL_EXTERNAL_CODE( 2903, C
LUS_ACCESS_READ, CLUS_NO_MODIFY ),
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINTHRESHOLD)
CLCTL_SET_CLUSTER_S2D_ENABLED = CLCTL_EXTERNAL_CODE( 2904, C
LUS_ACCESS_WRITE, CLUS_MODIFY ),
CLCTL_NOTIFY_S2D_POOL_CHANGE = CLCTL_EXTERNAL_CODE( 2905, C
LUS_ACCESS_WRITE, CLUS_NO_MODIFY ),
#endif
//
// 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 ),
CLCTL_REMOVE_OWNER = CLCTL_INTERNAL_CODE( 7, CLUS_ACCES S_WRITE, CLUS_MODIFY ), CLCTL_REMOVE_OWNER = CLCTL_INTERNAL_CODE( 7, CLUS_ACCES S_WRITE, CLUS_MODIFY ),
//************ Hole here at 8 //************ Hole here at 8
skipping to change at line 3026 skipping to change at line 3209
CLCTL_FSWITNESS_GET_EPOCH_INFO = CLCTL_INTERNAL_CODE( 23, CLUS_ACCE SS_READ, CLUS_NO_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_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_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_NETNAME_CREDS_NOTIFYCAM = CLCTL_INTERNAL_CODE( 26, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_NOTIFY_QUORUM_STATUS = CLCTL_INTERNAL_CODE( 31, CLUS_ACCE SS_WRITE, CLUS_MODIFY ), CLCTL_NOTIFY_QUORUM_STATUS = CLCTL_INTERNAL_CODE( 31, CLUS_ACCE SS_WRITE, CLUS_MODIFY ),
CLCTL_GET_OPERATION_CONTEXT = CLCTL_INTERNAL_CODE( 2106, CLUS_AC CESS_READ, CLUS_NO_MODIFY ), CLCTL_GET_OPERATION_CONTEXT = CLCTL_INTERNAL_CODE( 2106, CLUS_AC CESS_READ, CLUS_NO_MODIFY ),
CLCTL_NOTIFY_OWNER_CHANGE = CLCTL_INTERNAL_CODE( 2120, CLUS_AC CESS_WRITE, CLUS_MODIFY ), CLCTL_NOTIFY_OWNER_CHANGE = CLCTL_INTERNAL_CODE( 2120, CLUS_AC CESS_WRITE, CLUS_MODIFY ),
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINTHRESHOLD)
CLCTL_VALIDATE_CHANGE_GROUP = CLCTL_INTERNAL_CODE( 2121, CLUS_AC
CESS_READ, CLUS_NO_MODIFY ),
#endif
} 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 3197 skipping to change at line 3383
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_GET_DISK_NUMBER_INFO =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DISK_NUMBER_INFO ),
CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_IS_PATH_VALID ), CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_IS_PATH_VALID ),
CLUSCTL_RESOURCE_QUERY_DELETE = CLUSCTL_RESOURCE_QUERY_DELETE =
CLUSCTL_RESOURCE_CODE( CLCTL_QUERY_DELETE ), CLUSCTL_RESOURCE_CODE( CLCTL_QUERY_DELETE ),
CLUSCTL_RESOURCE_UPGRADE_DLL = CLUSCTL_RESOURCE_UPGRADE_DLL =
CLUSCTL_RESOURCE_CODE( CLCTL_RESOURCE_UPGRADE_DLL ), CLUSCTL_RESOURCE_CODE( CLCTL_RESOURCE_UPGRADE_DLL ),
CLUSCTL_RESOURCE_IPADDRESS_RENEW_LEASE = CLUSCTL_RESOURCE_IPADDRESS_RENEW_LEASE =
skipping to change at line 3230 skipping to change at line 3419
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_STORAGE_GET_DISK_INFO_EX2 =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DISK_INFO_EX2 ),
CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS = CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_MOUNTPOINTS ), CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_MOUNTPOINTS ),
CLUSCTL_RESOURCE_STORAGE_GET_DIRTY = CLUSCTL_RESOURCE_STORAGE_GET_DIRTY =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DIRTY ), CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_DIRTY ),
CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO = CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO =
CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_SHARED_VOLUME_INFO ), CLUSCTL_RESOURCE_CODE( CLCTL_STORAGE_GET_SHARED_VOLUME_INFO ),
CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE = CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE =
skipping to change at line 3366 skipping to change at line 3558
CLUSCTL_RESOURCE_RW_MODIFY_NOOP = CLUSCTL_RESOURCE_RW_MODIFY_NOOP =
CLUSCTL_RESOURCE_CODE( CLCTL_RW_MODIFY_NOOP ), CLUSCTL_RESOURCE_CODE( CLCTL_RW_MODIFY_NOOP ),
CLUSCTL_RESOURCE_NOTIFY_QUORUM_STATUS = CLUSCTL_RESOURCE_NOTIFY_QUORUM_STATUS =
CLUSCTL_RESOURCE_CODE( CLCTL_NOTIFY_QUORUM_STATUS ), CLUSCTL_RESOURCE_CODE( CLCTL_NOTIFY_QUORUM_STATUS ),
CLUSCTL_RESOURCE_NOTIFY_OWNER_CHANGE = CLUSCTL_RESOURCE_NOTIFY_OWNER_CHANGE =
CLUSCTL_RESOURCE_CODE( CLCTL_NOTIFY_OWNER_CHANGE ), CLUSCTL_RESOURCE_CODE( CLCTL_NOTIFY_OWNER_CHANGE ),
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINTHRESHOLD)
CLUSCTL_RESOURCE_VALIDATE_CHANGE_GROUP =
CLUSCTL_RESOURCE_CODE( CLCTL_VALIDATE_CHANGE_GROUP ),
#endif
CLUSCTL_CLOUD_WITNESS_RESOURCE_UPDATE_TOKEN = CLUSCTL_RESOURCE_CODE( CLCTL_C
LOUD_WITNESS_RESOURCE_UPDATE_TOKEN ),
CLUSCTL_RESOURCE_PREPARE_UPGRADE =
CLUSCTL_RESOURCE_CODE( CLCTL_RESOURCE_PREPARE_UPGRADE ),
CLUSCTL_RESOURCE_UPGRADE_COMPLETED =
CLUSCTL_RESOURCE_CODE( CLCTL_RESOURCE_UPGRADE_COMPLETED ),
CLUSCTL_RESOURCE_GET_STATE_CHANGE_TIME =
CLUSCTL_RESOURCE_CODE( CLCTL_GET_STATE_CHANGE_TIME )
} 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 3518 skipping to change at line 3725
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STARTING_PHASE2 ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STARTING_PHASE2 ),
CLUSCTL_RESOURCE_TYPE_HOLD_IO = CLUSCTL_RESOURCE_TYPE_HOLD_IO =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_HOLD_IO ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_HOLD_IO ),
CLUSCTL_RESOURCE_TYPE_RESUME_IO = CLUSCTL_RESOURCE_TYPE_RESUME_IO =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_RESUME_IO ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_RESUME_IO ),
CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_INT = CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_INT =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX2_INT ), CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_STORAGE_GET_AVAILABLE_DISKS_EX2_INT ),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_LOGDISKS =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_ELIGIBLE_LOGDISKS ),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_TARGET_DATADISKS =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_ELIGIBLE_TARGET_DATADI
SKS ),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_SOURCE_DATADISKS =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_ELIGIBLE_SOURCE_DATADI
SKS ),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICATED_DISKS =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_REPLICATED_DISKS ),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICA_VOLUMES =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_REPLICA_VOLUMES ),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_LOG_VOLUME =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_LOG_VOLUME ),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_RESOURCE_GROUP =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_RESOURCE_GROUP),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICATED_PARTITION_INFO =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_REPLICATED_PARTITION_I
NFO),
CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_LOG_INFO =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_REPLICATION_GET_LOG_INFO),
CLUSCTL_CLOUD_WITNESS_RESOURCE_TYPE_VALIDATE_CREDENTIALS = CLUSCTL_RESOURCE_
TYPE_CODE( CLCTL_CLOUD_WITNESS_RESOURCE_TYPE_VALIDATE_CREDENTIALS ),
CLUSCTL_RESOURCE_TYPE_PREPARE_UPGRADE =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_RESOURCE_PREPARE_UPGRADE ),
CLUSCTL_RESOURCE_TYPE_UPGRADE_COMPLETED =
CLUSCTL_RESOURCE_TYPE_CODE( CLCTL_RESOURCE_UPGRADE_COMPLETED ),
} CLUSCTL_RESOURCE_TYPE_CODES; } CLUSCTL_RESOURCE_TYPE_CODES;
// //
// Cluster Control Codes for Groups // Cluster Control Codes for Groups
// //
typedef enum CLUSCTL_GROUP_CODES { typedef enum CLUSCTL_GROUP_CODES {
// External // External
CLUSCTL_GROUP_UNKNOWN = CLUSCTL_GROUP_UNKNOWN =
CLUSCTL_GROUP_CODE( CLCTL_UNKNOWN ), CLUSCTL_GROUP_CODE( CLCTL_UNKNOWN ),
skipping to change at line 3583 skipping to change at line 3826
CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS= CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS=
CLUSCTL_GROUP_CODE( CLCTL_GET_COMMON_PROPERTY_FMTS ), CLUSCTL_GROUP_CODE( CLCTL_GET_COMMON_PROPERTY_FMTS ),
CLUSCTL_GROUP_GET_PRIVATE_PROPERTY_FMTS= CLUSCTL_GROUP_GET_PRIVATE_PROPERTY_FMTS=
CLUSCTL_GROUP_CODE( CLCTL_GET_PRIVATE_PROPERTY_FMTS ), CLUSCTL_GROUP_CODE( CLCTL_GET_PRIVATE_PROPERTY_FMTS ),
CLUSCTL_GROUP_GET_FAILURE_INFO = CLUSCTL_GROUP_GET_FAILURE_INFO =
CLUSCTL_GROUP_CODE( CLCTL_GET_FAILURE_INFO ), CLUSCTL_GROUP_CODE( CLCTL_GET_FAILURE_INFO ),
// last time a group moved see struct
// input - nothing
// output - see CLUSCTL_GROUP_GET_LAST_MOVE_TIME_OUTPUT
CLUSCTL_GROUP_GET_LAST_MOVE_TIME =
CLUSCTL_GROUP_CODE( CLCTL_GROUP_GET_LAST_MOVE_TIME ),
// Internal // Internal
} CLUSCTL_GROUP_CODES; } CLUSCTL_GROUP_CODES;
// //
// Cluster Control Codes for Nodes // Cluster Control Codes for Nodes
// //
typedef enum CLUSCTL_NODE_CODES { typedef enum CLUSCTL_NODE_CODES {
// External // External
skipping to change at line 3803 skipping to change at line 4052
// //
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 ),
CLUSCTL_CLUSTER_SET_STORAGE_CONFIGURATION =
CLUSCTL_CLUSTER_CODE( CLCTL_SET_STORAGE_CONFIGURATION ),
CLUSCTL_CLUSTER_GET_STORAGE_CONFIGURATION =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_STORAGE_CONFIGURATION ),
CLUSCTL_CLUSTER_GET_STORAGE_CONFIG_ATTRIBUTES =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_STORAGE_CONFIG_ATTRIBUTES ),
CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES = CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES =
CLUSCTL_CLUSTER_CODE( CLCTL_ENUM_COMMON_PROPERTIES ), CLUSCTL_CLUSTER_CODE( CLCTL_ENUM_COMMON_PROPERTIES ),
CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES = CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_RO_COMMON_PROPERTIES ), CLUSCTL_CLUSTER_CODE( CLCTL_GET_RO_COMMON_PROPERTIES ),
CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES = CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_COMMON_PROPERTIES ), CLUSCTL_CLUSTER_CODE( CLCTL_GET_COMMON_PROPERTIES ),
CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES = CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES =
skipping to change at line 3863 skipping to change at line 4121
CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID = CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_SHARED_VOLUME_ID ), CLUSCTL_CLUSTER_CODE( CLCTL_GET_SHARED_VOLUME_ID ),
CLUSCTL_CLUSTER_GET_CLUSDB_TIMESTAMP = CLUSCTL_CLUSTER_GET_CLUSDB_TIMESTAMP =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_CLUSDB_TIMESTAMP ), CLUSCTL_CLUSTER_CODE( CLCTL_GET_CLUSDB_TIMESTAMP ),
CLUSCTL_CLUSTER_GET_GUM_LOCK_OWNER = CLUSCTL_CLUSTER_GET_GUM_LOCK_OWNER =
CLUSCTL_CLUSTER_CODE( CLCTL_GET_GUM_LOCK_OWNER ), CLUSCTL_CLUSTER_CODE( CLCTL_GET_GUM_LOCK_OWNER ),
CLUSCTL_CLUSTER_REMOVE_NODE =
CLUSCTL_CLUSTER_CODE( CLCTL_REMOVE_NODE),
CLUSCTL_CLUSTER_SET_ACCOUNT_ACCESS =
CLUSCTL_CLUSTER_CODE( CLCTL_SET_ACCOUNT_ACCESS),
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINTHRESHOLD)
CLUSCTL_CLUSTER_SET_CLUSTER_S2D_ENABLED =
CLUSCTL_CLUSTER_CODE( CLCTL_SET_CLUSTER_S2D_ENABLED ),
CLUSCTL_CLUSTER_NOTIFY_S2D_POOL_CHANGE =
CLUSCTL_CLUSTER_CODE( CLCTL_NOTIFY_S2D_POOL_CHANGE ),
#endif
} 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 3885 skipping to change at line 4157
// //
// Define Resource SubClass bits // Define Resource SubClass bits
// //
// legacy subclass struct // legacy subclass struct
// //
typedef enum CLUS_RESSUBCLASS { typedef enum CLUS_RESSUBCLASS {
CLUS_RESSUBCLASS_SHARED = 0x80000000 CLUS_RESSUBCLASS_SHARED = 0x80000000
} CLUS_RESSUBCLASS; } CLUS_RESSUBCLASS;
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_DISK = 0x40000000 CLUS_RESSUBCLASS_STORAGE_DISK = 0x40000000,
CLUS_RESSUBCLASS_STORAGE_REPLICATION = 0x10000000
} 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 used by resource types and resources // Cluster Characteristics used by resource types and resources
// //
typedef enum CLUS_CHARACTERISTICS { typedef enum CLUS_CHARACTERISTICS {
skipping to change at line 3913 skipping to change at line 4186
CLUS_CHAR_BROADCAST_DELETE = 0x00000020, CLUS_CHAR_BROADCAST_DELETE = 0x00000020,
CLUS_CHAR_SINGLE_CLUSTER_INSTANCE = 0x00000040, // only one reso urce of this type allowed per cluster 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_CHAR_SINGLE_GROUP_INSTANCE = 0x00000080, // only one reso urce of this type allowed per group
CLUS_CHAR_COEXIST_IN_SHARED_VOLUME_GROUP= 0x00000100, CLUS_CHAR_COEXIST_IN_SHARED_VOLUME_GROUP= 0x00000100,
CLUS_CHAR_PLACEMENT_DATA = 0x00000200, CLUS_CHAR_PLACEMENT_DATA = 0x00000200,
CLUS_CHAR_MONITOR_DETACH = 0x00000400, CLUS_CHAR_MONITOR_DETACH = 0x00000400,
CLUS_CHAR_MONITOR_REATTACH = 0x00000800, CLUS_CHAR_MONITOR_REATTACH = 0x00000800,
CLUS_CHAR_OPERATION_CONTEXT = 0x00001000, CLUS_CHAR_OPERATION_CONTEXT = 0x00001000,
CLUS_CHAR_CLONES = 0x00002000, CLUS_CHAR_CLONES = 0x00002000,
CLUS_CHAR_NOT_PREEMPTABLE = 0x00004000, CLUS_CHAR_NOT_PREEMPTABLE = 0x00004000,
CLUS_CHAR_NOTIFY_NEW_OWNER = 0x00008000 CLUS_CHAR_NOTIFY_NEW_OWNER = 0x00008000,
CLUS_CHAR_SUPPORTS_UNMONITORED_STATE = 0x00010000,
CLUS_CHAR_INFRASTRUCTURE = 0x00020000 // The resource
type is for infrastructure and is not for roles
} 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 4107 skipping to change at line 4382
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
#ifndef _CLUSTER_API_TYPES_ #ifndef _CLUSTER_API_TYPES_
// Disk partition information flags. // Disk partition information flags.
typedef enum CLUSPROP_PIFLAGS { typedef enum CLUSPROP_PIFLAGS {
CLUSPROP_PIFLAG_STICKY = 0x00000001, CLUSPROP_PIFLAG_STICKY = 0x00000001,
CLUSPROP_PIFLAG_REMOVABLE = 0x00000002, CLUSPROP_PIFLAG_REMOVABLE = 0x00000002,
CLUSPROP_PIFLAG_USABLE = 0x00000004, CLUSPROP_PIFLAG_USABLE = 0x00000004,
CLUSPROP_PIFLAG_DEFAULT_QUORUM = 0x00000008, CLUSPROP_PIFLAG_DEFAULT_QUORUM = 0x00000008,
CLUSPROP_PIFLAG_USABLE_FOR_CSV = 0x00000010 CLUSPROP_PIFLAG_USABLE_FOR_CSV = 0x00000010,
CLUSPROP_PIFLAG_UNKNOWN = 0x80000000
} CLUSPROP_PIFLAGS; } CLUSPROP_PIFLAGS;
#if ( !MIDL_PASS && !__midl ) #if ( !MIDL_PASS && !__midl )
//force quorum information, useful for QON type resources //force quorum information, useful for QON type resources
//to be able to continue operation without the quorum //to be able to continue operation without the quorum
typedef struct CLUS_FORCE_QUORUM_INFO { typedef struct CLUS_FORCE_QUORUM_INFO {
DWORD dwSize; // size of this struct including the nod es list. DWORD dwSize; // size of this struct including the nod es list.
DWORD dwNodeBitMask; // a bit mask representing the max assum ed node set DWORD dwNodeBitMask; // a bit mask representing the max assum ed node set
DWORD dwMaxNumberofNodes; // the number of bits set in the mask DWORD dwMaxNumberofNodes; // the number of bits set in the mask
WCHAR multiszNodeList[1]; // Multi sz list of nodes WCHAR multiszNodeList[1]; // Multi sz list of nodes
skipping to change at line 4155 skipping to change at line 4431
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;
// Disk partition information ex V2 contains these members in addition to ex.
typedef struct CLUS_PARTITION_INFO_EX2 {
GUID GptPartitionId;
WCHAR szPartitionName[MAX_PATH];
} CLUS_PARTITION_INFO_EX2, *PCLUS_PARTITION_INFO_EX2;
typedef enum _CLUSTER_CSV_VOLUME_FAULT_STATE { typedef enum _CLUSTER_CSV_VOLUME_FAULT_STATE {
VolumeStateNoFaults = 0x00000000, VolumeStateNoFaults = 0x00000000,
VolumeStateNoDirectIO = 0x00000001, VolumeStateNoDirectIO = 0x00000001,
VolumeStateNoAccess = 0x00000002, VolumeStateNoAccess = 0x00000002,
VolumeStateInMaintenance = 0x00000004, VolumeStateInMaintenance = 0x00000004,
VolumeStateDismounted = 0x00000008 VolumeStateDismounted = 0x00000008
} CLUSTER_CSV_VOLUME_FAULT_STATE, *PCLUSTER_CSV_VOLUME_FAULT_STATE; } CLUSTER_CSV_VOLUME_FAULT_STATE, *PCLUSTER_CSV_VOLUME_FAULT_STATE;
typedef enum _CLUSTER_SHARED_VOLUME_BACKUP_STATE { typedef enum _CLUSTER_SHARED_VOLUME_BACKUP_STATE {
VolumeBackupNone = 0x00000000, VolumeBackupNone = 0x00000000,
skipping to change at line 4206 skipping to change at line 4488
WCHAR szNodeName[MAX_PATH]; WCHAR szNodeName[MAX_PATH];
CLUSTER_SHARED_VOLUME_STATE VolumeState; CLUSTER_SHARED_VOLUME_STATE VolumeState;
} CLUSTER_SHARED_VOLUME_STATE_INFO, *PCLUSTER_SHARED_VOLUME_STATE_INFO; } CLUSTER_SHARED_VOLUME_STATE_INFO, *PCLUSTER_SHARED_VOLUME_STATE_INFO;
// Bit mask values for CSV redirected IO reason - upto 64 reasons are supported. // Bit mask values for CSV redirected IO reason - upto 64 reasons are supported.
#define RedirectedIOReasonUserRequest 0x0000000000000001 #define RedirectedIOReasonUserRequest 0x0000000000000001
#define RedirectedIOReasonUnsafeFileSystemFilter 0x0000000000000002 #define RedirectedIOReasonUnsafeFileSystemFilter 0x0000000000000002
#define RedirectedIOReasonUnsafeVolumeFilter 0x0000000000000004 #define RedirectedIOReasonUnsafeVolumeFilter 0x0000000000000004
#define RedirectedIOReasonFileSystemTiering 0x0000000000000008 #define RedirectedIOReasonFileSystemTiering 0x0000000000000008
#define RedirectedIOReasonBitLockerInitializing 0x0000000000000010 #define RedirectedIOReasonBitLockerInitializing 0x0000000000000010
#define RedirectedIOReasonReFs 0x0000000000000020
#define RedirectedIOReasonMax 0x8000000000000000 #define RedirectedIOReasonMax 0x8000000000000000
#define VolumeRedirectedIOReasonNoDiskConnectivity 0x0000000000000001 #define VolumeRedirectedIOReasonNoDiskConnectivity 0x0000000000000001
#define VolumeRedirectedIOReasonStorageSpaceNotAttached 0x0000000000000002 #define VolumeRedirectedIOReasonStorageSpaceNotAttached 0x0000000000000002
#define VolumeRedirectedIOReasonVolumeReplicationEnabled 0x0000000000000004
#define VolumeRedirectedIOReasonMax 0x8000000000000000 #define VolumeRedirectedIOReasonMax 0x8000000000000000
typedef struct _CLUSTER_SHARED_VOLUME_STATE_INFO_EX typedef struct _CLUSTER_SHARED_VOLUME_STATE_INFO_EX
{ {
WCHAR szVolumeName[MAX_PATH]; WCHAR szVolumeName[MAX_PATH];
WCHAR szNodeName[MAX_PATH]; WCHAR szNodeName[MAX_PATH];
CLUSTER_SHARED_VOLUME_STATE VolumeState; CLUSTER_SHARED_VOLUME_STATE VolumeState;
WCHAR szVolumeFriendlyName[MAX_PATH]; WCHAR szVolumeFriendlyName[MAX_PATH];
ULONGLONG RedirectedIOReason; ULONGLONG RedirectedIOReason;
ULONGLONG VolumeRedirectedIOReason; ULONGLONG VolumeRedirectedIOReason;
} CLUSTER_SHARED_VOLUME_STATE_INFO_EX, *PCLUSTER_SHARED_VOLUME_STATE_INFO_EX; } CLUSTER_SHARED_VOLUME_STATE_INFO_EX, *PCLUSTER_SHARED_VOLUME_STATE_INFO_EX;
#if (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINTHRESHOLD)
//
// S2D state change notification types.
//
#define NOTIFY_S2D_POOL_CHANGE_IN_CHANGE_TYPE_OPTIMIZE_REQUEST 1
#define NOTIFY_S2D_POOL_CHANGE_IN_CHANGE_TYPE_POOL_DRIVE_CHANGED 2
//
// Drive change notification types.
//
#define NOTIFY_S2D_POOL_CHANGE_IN_DRIVE_CHANGE_TYPE_ADDED 1
#define NOTIFY_S2D_POOL_CHANGE_IN_DRIVE_CHANGE_TYPE_REMOVED 2
#define NOTIFY_S2D_POOL_CHANGE_IN_DRIVE_CHANGE_TYPE_CHANGED 3
//
// Input to CLUSCTL_CLUSTER_NOTIFY_S2D_POOL_CHANGE.
//
typedef struct _NOTIFY_S2D_POOL_CHANGE_IN
{
//
// Size of this structure, in bytes.
//
UINT32 Size;
//
// The change notification type, one of the NOTIFY_S2D_POOL_CHANGE_IN_CHANGE
_TYPE_* operations above.
//
UINT64 ChangeType;
//
// Parameters valid when ChangeType == NOTIFY_S2D_POOL_CHANGE_IN_CHANGE_TYPE
_POOL_DRIVE_CHANGED
//
struct
{
//
// One of the NOTIFY_S2D_POOL_CHANGE_IN_DRIVE_CHANGE_TYPE_* values above
.
//
UINT64 DriveChangeType;
//
// The id of the pool that changed.
//
GUID PoolId;
//
// The id of the drive that changed.
//
GUID DriveId;
}
DriveChangeParams;
}
NOTIFY_S2D_POOL_CHANGE_IN, *PNOTIFY_S2D_POOL_CHANGE_IN;
#define NOTIFY_S2D_POOL_CHANGE_IN_VALIDATE_SIZE(InBuffer,InBufferSize) \
(((InBufferSize) >= sizeof(NOTIFY_S2D_POOL_CHANGE_IN)) \
&& (((PNOTIFY_S2D_POOL_CHANGE_IN)(InBuffer))->Size >= sizeof(NOTIFY_S2D_POOL
_CHANGE_IN)) \
&& (((PNOTIFY_S2D_POOL_CHANGE_IN)(InBuffer))->Size <= InBufferSize))
#endif
typedef struct _CLUS_CHKDSK_INFO { typedef struct _CLUS_CHKDSK_INFO {
DWORD PartitionNumber; DWORD PartitionNumber;
DWORD ChkdskState; DWORD ChkdskState;
DWORD FileIdCount; DWORD FileIdCount;
ULONGLONG FileIdList[1]; // variable length array ULONGLONG FileIdList[1]; // variable length array
} CLUS_CHKDSK_INFO, *PCLUS_CHKDSK_INFO; } CLUS_CHKDSK_INFO, *PCLUS_CHKDSK_INFO;
typedef struct _CLUS_DISK_NUMBER_INFO { typedef struct _CLUS_DISK_NUMBER_INFO {
DWORD DiskNumber; DWORD DiskNumber;
DWORD BytesPerSector; DWORD BytesPerSector;
skipping to change at line 4266 skipping to change at line 4610
, public CLUS_PARTITION_INFO_EX { , public CLUS_PARTITION_INFO_EX {
#else #else
typedef struct CLUSPROP_PARTITION_INFO_EX { typedef struct CLUSPROP_PARTITION_INFO_EX {
CLUSPROP_VALUE; CLUSPROP_VALUE;
CLUS_PARTITION_INFO_EX; CLUS_PARTITION_INFO_EX;
#endif #endif
} CLUSPROP_PARTITION_INFO_EX; } CLUSPROP_PARTITION_INFO_EX;
typedef CLUSPROP_PARTITION_INFO_EX UNALIGNED *PCLUSPROP_PARTITION_INFO_EX; typedef CLUSPROP_PARTITION_INFO_EX UNALIGNED *PCLUSPROP_PARTITION_INFO_EX;
// Disk partition information for CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX2
#ifdef __cplusplus
typedef struct CLUSPROP_PARTITION_INFO_EX2
: public CLUSPROP_PARTITION_INFO_EX
, public CLUS_PARTITION_INFO_EX2 {
#else
typedef struct CLUSPROP_PARTITION_INFO_EX2 {
CLUSPROP_PARTITION_INFO_EX;
CLUS_PARTITION_INFO_EX2;
#endif
} CLUSPROP_PARTITION_INFO_EX2;
typedef CLUSPROP_PARTITION_INFO_EX2 UNALIGNED *PCLUSPROP_PARTITION_INFO_EX2;
// //
// FT set information. // FT set information.
// //
typedef struct CLUS_FTSET_INFO { typedef struct CLUS_FTSET_INFO {
DWORD dwRootSignature; DWORD dwRootSignature;
DWORD dwFtType; DWORD dwFtType;
} CLUS_FTSET_INFO, *PCLUS_FTSET_INFO; } CLUS_FTSET_INFO, *PCLUS_FTSET_INFO;
// Disk partition information property value. // Disk partition information property value.
#ifdef __cplusplus #ifdef __cplusplus
skipping to change at line 4341 skipping to change at line 4699
#define MAX_CREATINGDC_LENGTH 256 #define MAX_CREATINGDC_LENGTH 256
typedef struct CLUS_NETNAME_PWD_INFO { typedef struct CLUS_NETNAME_PWD_INFO {
DWORD Flags; DWORD Flags;
WCHAR Password[MAX_CO_PASSWORD_LENGTH]; WCHAR Password[MAX_CO_PASSWORD_LENGTH];
WCHAR CreatingDC[MAX_CREATINGDC_LENGTH+2]; // including the '\\' prefix WCHAR CreatingDC[MAX_CREATINGDC_LENGTH+2]; // including the '\\' prefix
WCHAR ObjectGuid[MAX_OBJECTID]; // WCHAR ObjectGuid[MAX_OBJECTID]; //
} CLUS_NETNAME_PWD_INFO, *PCLUS_NETNAME_PWD_INFO, CLUS_RLUA_PWD_INFO, *PCLUS_RLU A_PWD_INFO; } CLUS_NETNAME_PWD_INFO, *PCLUS_NETNAME_PWD_INFO, CLUS_RLUA_PWD_INFO, *PCLUS_RLU A_PWD_INFO;
// //
// input structure for CLUSCTL_RESOURCE_DNN_SEND_LEADER_STATUS // input structure for CLUSCTL_RESOURCE_DNN_SEND_LEADER_STATUS and for CLUSCTL_R ESOURCE_DNN_REFRESH_CLONES
// //
typedef struct CLUS_DNN_LEADER_STATUS { typedef struct CLUS_DNN_LEADER_STATUS {
BOOL IsOnline; // Indicates if the leader is online or is shutting down BOOL IsOnline; // Indicates if the leader is online or is shutting down
BOOL IsFileServerPresent; // Indicates if a file server is depending on the netname BOOL IsFileServerPresent; // Indicates if a file server is depending on the netname
} CLUS_DNN_LEADER_STATUS , *PCLUS_DNN_LEADER_STATUS; } CLUS_DNN_LEADER_STATUS , *PCLUS_DNN_LEADER_STATUS;
// //
// input structure for CLUSCTL_RESOURCE_DNN_UPDATE_SODAFS_CLONE_STATUS // input structure for CLUSCTL_RESOURCE_DNN_UPDATE_SODAFS_CLONE_STATUS
// //
typedef struct CLUS_DNN_SODAFS_CLONE_STATUS { typedef struct CLUS_DNN_SODAFS_CLONE_STATUS {
skipping to change at line 4462 skipping to change at line 4820
} FILESHARE_CHANGE, *PFILESHARE_CHANGE; } FILESHARE_CHANGE, *PFILESHARE_CHANGE;
#pragma warning(push) #pragma warning(push)
#pragma warning(disable: 4200) #pragma warning(disable: 4200)
typedef struct _FILESHARE_CHANGE_LIST { typedef struct _FILESHARE_CHANGE_LIST {
DWORD NumEntries; DWORD NumEntries;
FILESHARE_CHANGE ChangeEntry[0]; FILESHARE_CHANGE ChangeEntry[0];
} FILESHARE_CHANGE_LIST, *PFILESHARE_CHANGE_LIST; } FILESHARE_CHANGE_LIST, *PFILESHARE_CHANGE_LIST;
#pragma warning(pop) #pragma warning(pop)
typedef struct _CLUSCTL_GROUP_GET_LAST_MOVE_TIME_OUTPUT
{
ULONGLONG GetTickCount64;
SYSTEMTIME GetSystemTime;
DWORD NodeId;
} CLUSCTL_GROUP_GET_LAST_MOVE_TIME_OUTPUT, *PCLUSCTL_GROUP_GET_LAST_MOVE_TIME_OU
TPUT;
// 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 4490 skipping to change at line 4855
PCLUSPROP_MULTI_SZ pMultiSzValue; PCLUSPROP_MULTI_SZ pMultiSzValue;
PCLUSPROP_SECURITY_DESCRIPTOR pSecurityDescriptor; PCLUSPROP_SECURITY_DESCRIPTOR pSecurityDescriptor;
PCLUSPROP_RESOURCE_CLASS pResourceClassValue; PCLUSPROP_RESOURCE_CLASS pResourceClassValue;
PCLUSPROP_RESOURCE_CLASS_INFO pResourceClassInfoValue; PCLUSPROP_RESOURCE_CLASS_INFO pResourceClassInfoValue;
PCLUSPROP_DISK_SIGNATURE pDiskSignatureValue; PCLUSPROP_DISK_SIGNATURE pDiskSignatureValue;
PCLUSPROP_SCSI_ADDRESS pScsiAddressValue; PCLUSPROP_SCSI_ADDRESS pScsiAddressValue;
PCLUSPROP_DISK_NUMBER pDiskNumberValue; PCLUSPROP_DISK_NUMBER pDiskNumberValue;
PCLUSPROP_PARTITION_INFO pPartitionInfoValue; PCLUSPROP_PARTITION_INFO pPartitionInfoValue;
PCLUSPROP_REQUIRED_DEPENDENCY pRequiredDependencyValue; PCLUSPROP_REQUIRED_DEPENDENCY pRequiredDependencyValue;
PCLUSPROP_PARTITION_INFO_EX pPartitionInfoValueEx; PCLUSPROP_PARTITION_INFO_EX pPartitionInfoValueEx;
PCLUSPROP_PARTITION_INFO_EX2 pPartitionInfoValueEx2;
PCLUSPROP_FILETIME pFileTimeValue; PCLUSPROP_FILETIME pFileTimeValue;
} CLUSPROP_BUFFER_HELPER, *PCLUSPROP_BUFFER_HELPER; } CLUSPROP_BUFFER_HELPER, *PCLUSPROP_BUFFER_HELPER;
#endif // MIDL_PASS #endif // MIDL_PASS
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
// Macro for aligning CLUSPROP buffers on a DWORD boundary. // Macro for aligning CLUSPROP buffers on a DWORD boundary.
#define ALIGN_CLUSPROP( count ) ((count + 3) & ~3) #define ALIGN_CLUSPROP( count ) ((count + 3) & ~3)
skipping to change at line 5468 skipping to change at line 5834
LONG WINAPI ClusterRegCloseReadBatch( LONG WINAPI ClusterRegCloseReadBatch(
_In_ HREGREADBATCH hRegReadBatch, _In_ HREGREADBATCH hRegReadBatch,
_Out_ HREGREADBATCHREPLY * phRegReadBatchReply); _Out_ HREGREADBATCHREPLY * phRegReadBatchReply);
typedef LONG typedef LONG
(WINAPI *PCLUSTER_REG_CLOSE_READ_BATCH)( (WINAPI *PCLUSTER_REG_CLOSE_READ_BATCH)(
_In_ HREGREADBATCH hRegReadBatch, _In_ HREGREADBATCH hRegReadBatch,
_Out_ HREGREADBATCHREPLY * phRegReadBatchReply); _Out_ HREGREADBATCHREPLY * phRegReadBatchReply);
LONG WINAPI ClusterRegCloseReadBatchEx(
_In_ HREGREADBATCH hRegReadBatch,
_In_ DWORD flags,
_Out_ HREGREADBATCHREPLY * phRegReadBatchReply);
typedef LONG
(WINAPI *PCLUSTER_REG_CLOSE_READ_BATCH_EX)(
_In_ HREGREADBATCH hRegReadBatch,
_In_ DWORD flags,
_Out_ HREGREADBATCHREPLY * phRegReadBatchReply);
LONG WINAPI ClusterRegReadBatchReplyNextCommand( LONG WINAPI ClusterRegReadBatchReplyNextCommand(
_In_ HREGREADBATCHREPLY hRegReadBatchReply, _In_ HREGREADBATCHREPLY hRegReadBatchReply,
_Out_ CLUSTER_READ_BATCH_COMMAND * pBatchCommand); _Out_ CLUSTER_READ_BATCH_COMMAND * pBatchCommand);
typedef LONG typedef LONG
(WINAPI *PCLUSTER_REG_READ_BATCH_REPLY_NEXT_COMMAND)( (WINAPI *PCLUSTER_REG_READ_BATCH_REPLY_NEXT_COMMAND)(
_In_ HREGREADBATCHREPLY hRegReadBatchReply, _In_ HREGREADBATCHREPLY hRegReadBatchReply,
_Out_ CLUSTER_READ_BATCH_COMMAND * pBatchCommand); _Out_ CLUSTER_READ_BATCH_COMMAND * pBatchCommand);
LONG WINAPI ClusterRegCloseReadBatchReply( LONG WINAPI ClusterRegCloseReadBatchReply(
_In_ HREGREADBATCHREPLY hRegReadBatchReply); _In_ HREGREADBATCHREPLY hRegReadBatchReply);
typedef LONG typedef LONG
(WINAPI *PCLUSTER_REG_CLOSE_READ_BATCH_REPLY)( (WINAPI *PCLUSTER_REG_CLOSE_READ_BATCH_REPLY)(
_In_ HREGREADBATCHREPLY hRegReadBatchReply); _In_ HREGREADBATCHREPLY hRegReadBatchReply);
DWORD
WINAPI
ClusterSetAccountAccess(
_In_ HCLUSTER hCluster,
_In_ LPCWSTR szAccountSID, //Takes in String SID or an account name
_In_ DWORD dwAccess,
_In_ DWORD dwControlType
);
typedef DWORD
(WINAPI *PCLUSTER_SET_ACCOUNT_ACCESS)(
_In_ HCLUSTER hCluster,
_In_ LPCWSTR szAccountSID,
_In_ DWORD dwAccess,
_In_ DWORD dwControlType
);
// //
// Cluster Create, Add Node and Destroy Cluster APIs // Cluster Create, Add Node and Destroy Cluster APIs
// //
// //
// Phases that cluster setup operations 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_SETUP_PHASE { typedef enum _CLUSTER_SETUP_PHASE {
skipping to change at line 5577 skipping to change at line 5971
_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_opt_ PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback, _In_opt_ PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
_In_opt_ PVOID pvCallbackArg _In_opt_ PVOID pvCallbackArg
); );
HCLUSTER
WINAPI
CreateClusterCNOless(
_In_ PCREATE_CLUSTER_CONFIG pConfig,
_In_opt_ PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
_In_opt_ PVOID pvCallbackArg
);
typedef HCLUSTER
(WINAPI * PCLUSAPI_CREATE_CLUSTER_CNOLESS)(
_In_ PCREATE_CLUSTER_CONFIG pConfig,
_In_opt_ PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
_In_opt_ PVOID pvCallbackArg
);
DWORD
WINAPI
CreateClusterNameAccount(
_In_ HCLUSTER hCluster,
_In_ PCREATE_CLUSTER_NAME_ACCOUNT pConfig,
_In_opt_ PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
_In_opt_ PVOID pvCallbackArg
);
typedef DWORD
(WINAPI * PCLUSAPI_CREATE_CLUSTER_NAME_ACCOUNT)(
_In_ HCLUSTER hCluster,
_In_ PCREATE_CLUSTER_NAME_ACCOUNT pConfig,
_In_opt_ PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
_In_opt_ PVOID pvCallbackArg
);
DWORD
WINAPI
RegisterClusterResourceTypeNotifyV2 (
__in HCHANGE hChange,
__in HCLUSTER hCluster,
__in LONGLONG Flags,
__in LPCWSTR resTypeName,
__in DWORD_PTR dwNotifyKey
);
HNODE HNODE
WINAPI WINAPI
AddClusterNode( AddClusterNode(
_In_ HCLUSTER hCluster, _In_ HCLUSTER hCluster,
_In_ PCWSTR lpszNodeName, _In_ PCWSTR lpszNodeName,
_In_opt_ PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback, _In_opt_ PCLUSTER_SETUP_PROGRESS_CALLBACK pfnProgressCallback,
_In_opt_ PVOID pvCallbackArg _In_opt_ PVOID pvCallbackArg
); );
typedef HNODE typedef HNODE
skipping to change at line 5649 skipping to change at line 6085
#define CLUS_RESTYPE_NAME_FILESERVER L"File Server" #define CLUS_RESTYPE_NAME_FILESERVER L"File Server"
#define CLUS_RESTYPE_NAME_SODAFILESERVER L"Scale Out File Server" #define CLUS_RESTYPE_NAME_SODAFILESERVER L"Scale Out File Server"
#define CLUS_RESTYPE_NAME_DFS L"Distributed File System" #define CLUS_RESTYPE_NAME_DFS L"Distributed File System"
#define CLUS_RESTYPE_NAME_DFSR L"DFS Replicated Folder" #define CLUS_RESTYPE_NAME_DFSR L"DFS Replicated Folder"
#define CLUS_RESTYPE_NAME_VM L"Virtual Machine" #define CLUS_RESTYPE_NAME_VM L"Virtual Machine"
#define CLUS_RESTYPE_NAME_VM_CONFIG L"Virtual Machine Configuration" #define CLUS_RESTYPE_NAME_VM_CONFIG L"Virtual Machine Configuration"
#define CLUS_RESTYPE_NAME_ISCSITARGET L"iSCSI Target Server" #define CLUS_RESTYPE_NAME_ISCSITARGET L"iSCSI Target Server"
#define CLUS_RESTYPE_NAME_STORAGE_POOL L"Storage Pool" #define CLUS_RESTYPE_NAME_STORAGE_POOL L"Storage Pool"
#define CLUS_RESTYPE_NAME_TASKSCHEDULER L"Task Scheduler" #define CLUS_RESTYPE_NAME_TASKSCHEDULER L"Task Scheduler"
#define CLUS_RESTYPE_NAME_VMREPLICA_BROKER L"Virtual Machine Replication Br oker" #define CLUS_RESTYPE_NAME_VMREPLICA_BROKER L"Virtual Machine Replication Br oker"
#define CLUS_RESTYPE_NAME_VMREPLICA_COORDINATOR L"Virtual Machine Replicati on Coordinator"
#define CLUS_RESTYPE_NAME_NFS_V2 L"Network File System" #define CLUS_RESTYPE_NAME_NFS_V2 L"Network File System"
#define CLUS_RESTYPE_NAME_CAU L"ClusterAwareUpdatingResource" #define CLUS_RESTYPE_NAME_CAU L"ClusterAwareUpdatingResource"
#define CLUS_RESTYPE_NAME_NV_PROVIDER_ADDRESS L"Provider Address" #define CLUS_RESTYPE_NAME_NV_PROVIDER_ADDRESS L"Provider Address"
#define CLUS_RESTYPE_NAME_NAT L"Nat" #define CLUS_RESTYPE_NAME_NAT L"Nat"
#define CLUS_RESTYPE_NAME_STORAGE_POLICIES L"Storage Policies"
#define CLUS_RESTYPE_NAME_STORQOS L"Storage QoS Policy Manager"
#define CLUS_RESTYPE_NAME_HEALTH_SERVICE L"Health Service"
#define CLUS_RESTYPE_NAME_VM_WMI L"Virtual Machine Cluster WMI"
#define CLUS_RESTYPE_NAME_VIRTUAL_IPV4 L"Disjoint IPv4 Address" #define CLUS_RESTYPE_NAME_VIRTUAL_IPV4 L"Disjoint IPv4 Address"
#define CLUS_RESTYPE_NAME_VIRTUAL_IPV6 L"Disjoint IPv6 Address" #define CLUS_RESTYPE_NAME_VIRTUAL_IPV6 L"Disjoint IPv6 Address"
#define CLUS_RESTYPE_NAME_CLOUD_WITNESS L"Cloud Witness"
#define CLUS_RESTYPE_NAME_STORAGE_REPLICA L"Storage Replica"
// //
// Cluster common property names // Cluster common property names
// //
#define CLUSREG_NAME_CLUS_DESC L"Description" #define CLUSREG_NAME_CLUS_DESC L"Description"
#define CLUSREG_NAME_CLUS_SD L"Security Descriptor" #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 CLUSTER_HANG_TIMEOUT_KEYNAME L"ClusSvcHangTimeout" #define CLUSTER_HANG_TIMEOUT_KEYNAME L"ClusSvcHangTimeout"
skipping to change at line 5695 skipping to change at line 6139
#define CLUSREG_NAME_CSV_MDS_SD L"SharedVolumeSecurityDescrip tor" #define CLUSREG_NAME_CSV_MDS_SD L"SharedVolumeSecurityDescrip tor"
#define CLUSREG_NAME_FAILOVER_MOVE_MIGRATION_TYPE L"FailoverMoveMigrationType" #define CLUSREG_NAME_FAILOVER_MOVE_MIGRATION_TYPE L"FailoverMoveMigrationType"
#define CLUSREG_NAME_CSV_BLOCK_CACHE L"BlockCacheSize" #define CLUSREG_NAME_CSV_BLOCK_CACHE L"BlockCacheSize"
#define CLUSREG_NAME_ROUTE_HISTORY_LENGTH L"RouteHistoryLength" #define CLUSREG_NAME_ROUTE_HISTORY_LENGTH L"RouteHistoryLength"
#define CLUSREG_NAME_LAST_RECENT_EVENTS_RESET_TIME L"RecentEventsResetTime" #define CLUSREG_NAME_LAST_RECENT_EVENTS_RESET_TIME L"RecentEventsResetTime"
#define CLUSREG_NAME_DRAIN_ON_SHUTDOWN L"DrainOnShutdown" #define CLUSREG_NAME_DRAIN_ON_SHUTDOWN L"DrainOnShutdown"
#define CLUSREG_NAME_NETFT_IPSEC_ENABLED L"NetftIPSecEnabled" #define CLUSREG_NAME_NETFT_IPSEC_ENABLED L"NetftIPSecEnabled"
#define CLUSREG_NAME_WITNESS_DYNAMIC_WEIGHT L"WitnessDynamicWeight" #define CLUSREG_NAME_WITNESS_DYNAMIC_WEIGHT L"WitnessDynamicWeight"
#define CLUSREG_NAME_MESSAGE_BUFFER_LENGTH L"MessageBufferLength" #define CLUSREG_NAME_MESSAGE_BUFFER_LENGTH L"MessageBufferLength"
#define CLUSREG_NAME_DATABASE_READ_WRITE_MODE L"DatabaseReadWriteMode" #define CLUSREG_NAME_DATABASE_READ_WRITE_MODE L"DatabaseReadWriteMode"
#define CLUSREG_NAME_FUNCTIONAL_LEVEL L"ClusterFunctionalLevel"
//#define CLUSREG_NAME_MIXED_MODE L"MixedVersionNodes"
#define CLUSREG_NAME_RESILIENCY_LEVEL L"ResiliencyLevel"
#define CLUSREG_NAME_RESILIENCY_DEFAULT_SECONDS L"ResiliencyDefaultPeriod"
#define CLUSREG_NAME_QUARANTINE_THRESHOLD L"QuarantineThreshold"
#define CLUSREG_NAME_QUARANTINE_DURATION L"QuarantineDuration"
#define CLUSTER_S2D_ENABLED L"S2DEnabled"
#define CLUSTER_S2D_BUS_TYPES L"S2DBusTypes"
#define CLUSTER_S2D_OPTIMIZATIONS L"S2DOptimizations"
#define CLUSTER_S2D_IO_LATENCY_THRESHOLD L"S2DIOLatencyThreshold"
#define CLUSTER_S2D_CACHE_DESIRED_STATE L"S2DCacheDesiredState"
#define CLUSTER_S2D_CACHE_METADATA_RESERVE L"S2DCacheMetadataReserveByte
s"
#define CLUSTER_S2D_CACHE_FLASH_RESERVE_PERCENT L"S2DCacheFlashReservePercent
"
#define CLUSTER_S2D_CACHE_BEHAVIOR_FLAGS L"S2DCacheBehavior"
#define CLUSTER_NAME_PREFERRED_SITE L"PreferredSite"
#define CLUSTER_NAME_AUTO_BALANCER L"AutoBalancer"
// //
// 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_SAME_SUBNET_DELAY L"SameSubnetDelay"
#define CLUSREG_NAME_CROSS_SUBNET_DELAY L"CrossSubnetDelay" #define CLUSREG_NAME_CROSS_SUBNET_DELAY L"CrossSubnetDelay"
#define CLUSREG_NAME_CROSS_SITE_DELAY L"CrossSiteDelay"
#define CLUSREG_NAME_SAME_SUBNET_THRESHOLD L"SameSubnetThreshold" #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" #define CLUSREG_NAME_CROSS_SUBNET_THRESHOLD L"CrossSubnetThreshold"
#define CLUSREG_NAME_CROSS_SITE_THRESHOLD L"CrossSiteThreshold"
#define CLUSREG_NAME_PLUMB_ALL_CROSS_SUBNET_ROUTES L"PlumbAllCrossSubnetRoutes"
// //
// 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"
#define CLUSREG_NAME_NODE_MINOR_VERSION L"MinorVersion" #define CLUSREG_NAME_NODE_MINOR_VERSION L"MinorVersion"
#define CLUSREG_NAME_NODE_BUILD_NUMBER L"BuildNumber" #define CLUSREG_NAME_NODE_BUILD_NUMBER L"BuildNumber"
#define CLUSREG_NAME_NODE_CSDVERSION L"CSDVersion" #define CLUSREG_NAME_NODE_CSDVERSION L"CSDVersion"
#define CLUSREG_NAME_NODE_WEIGHT L"NodeWeight" #define CLUSREG_NAME_NODE_WEIGHT L"NodeWeight"
#define CLUSREG_NAME_NODE_DYNAMIC_WEIGHT L"DynamicWeight" #define CLUSREG_NAME_NODE_DYNAMIC_WEIGHT L"DynamicWeight"
#define CLUSREG_NAME_NODE_IS_PRIMARY L"IsPrimary" #define CLUSREG_NAME_NODE_IS_PRIMARY L"IsPrimary"
#define CLUSREG_NAME_NODE_DRAIN_STATUS L"NodeDrainStatus" #define CLUSREG_NAME_NODE_DRAIN_STATUS L"NodeDrainStatus"
#define CLUSREG_NAME_NODE_DRAIN_TARGET L"NodeDrainTarget" #define CLUSREG_NAME_NODE_DRAIN_TARGET L"NodeDrainTarget"
#define CLUSREG_NAME_NODE_NEEDS_PQ L"NeedsPreventQuorum" #define CLUSREG_NAME_NODE_NEEDS_PQ L"NeedsPreventQuorum"
#define CLUSREG_NAME_NODE_FDID L"FaultDomainId"
#define CLUSREG_NAME_NODE_STATUS_INFO L"StatusInformation"
#define CLUSREG_NAME_NODE_SITE L"Site"
// //
// Group common property names // Group common property names
// //
#define CLUSREG_NAME_GRP_NAME L"Name" #define CLUSREG_NAME_GRP_NAME L"Name"
#define CLUSREG_NAME_GRP_TYPE L"GroupType" #define CLUSREG_NAME_GRP_TYPE L"GroupType"
#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_PRIORITY L"Priority"
#define CLUSREG_NAME_GRP_DEFAULT_OWNER L"DefaultOwner" #define CLUSREG_NAME_GRP_DEFAULT_OWNER L"DefaultOwner"
#define CLUSREG_NAME_GRP_STATUS_INFORMATION L"StatusInformation" #define CLUSREG_NAME_GRP_STATUS_INFORMATION L"StatusInformation"
#define CLUSREG_NAME_GRP_ANTI_AFFINITY_CLASS_NAME L"AntiAffinityClassNa mes" #define CLUSREG_NAME_GRP_ANTI_AFFINITY_CLASS_NAME L"AntiAffinityClassNa mes"
#define CLUSREG_NAME_GRP_START_DELAY L"GroupStartDelay" #define CLUSREG_NAME_GRP_START_DELAY L"GroupStartDelay"
#define CLUSREG_NAME_GRP_CCF_EPOCH L"CCFEpoch"
#define CLUSREG_NAME_GRP_RESILIENCY_PERIOD L"ResiliencyPeriod"
#define CLUSREG_NAME_GRP_PREFERRED_SITE L"PreferredSite"
// //
// 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"
skipping to change at line 5782 skipping to change at line 6250
// //
#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
#define CLUSREG_NAME_RESTYPE_IS_ALIVE CLUSREG_NAME_RES_IS_ALIVE #define CLUSREG_NAME_RESTYPE_IS_ALIVE CLUSREG_NAME_RES_IS_ALIVE
#define CLUSREG_NAME_RESTYPE_PENDING_TIMEOUT CLUSREG_NAME_RES_PENDING_TIMEOUT #define CLUSREG_NAME_RESTYPE_PENDING_TIMEOUT CLUSREG_NAME_RES_PENDING_TIMEOUT
#define CLUSREG_NAME_RESTYPE_DEADLOCK_TIMEOUT CLUSREG_NAME_RES_DEADLOCK_TIMEOU T #define CLUSREG_NAME_RESTYPE_DEADLOCK_TIMEOUT CLUSREG_NAME_RES_DEADLOCK_TIMEOU T
#define CLUSREG_NAME_RESTYPE_DUMP_POLICY L"DumpPolicy"
#define CLUSREG_NAME_RESTYPE_DUMP_LOG_QUERY L"DumpLogQuery"
#define CLUSREG_NAME_RESTYPE_DUMP_SERVICES L"DumpServices"
#define CLUSREG_NAME_RESTYPE_ENABLED_EVENT_LOGS L"EnabledEventLogs"
#define CLUSREG_NAME_RESTYPE_MAX_MONITORS L"MaximumMonitors"
// //
// Network common property names // Network common property names
// //
#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"
skipping to change at line 5846 skipping to change at line 6319
#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"MaintenanceMode" #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_CSVWRITETHROUGH L"CsvEnforceWriteThrough"
#define CLUSREG_NAME_PHYSDISK_CSVBLOCKCACHE L"EnableBlockCache" #define CLUSREG_NAME_PHYSDISK_CSVBLOCKCACHE L"EnableBlockCache"
#define CLUSREG_NAME_PHYSDISK_FASTONLINEARBITRATE L"FastOnlineArbitrate"
#define CLUSREG_NAME_PHYSDISK_SPACEIDGUID L"VirtualDiskId" #define CLUSREG_NAME_PHYSDISK_SPACEIDGUID L"VirtualDiskId"
#define CLUSREG_NAME_STORAGESPACE_POOLIDGUID L"PoolId" #define CLUSREG_NAME_STORAGESPACE_POOLIDGUID L"PoolId"
#define CLUSREG_NAME_PHYSDISK_CSVSNAPSHOTDIFFAREASIZE L"SnapshotDiffSize" #define CLUSREG_NAME_PHYSDISK_CSVSNAPSHOTDIFFAREASIZE L"SnapshotDiffSize"
#define CLUSREG_NAME_PHYSDISK_CSVSNAPSHOTAGELIMIT L"SnapshotAgeLimit" #define CLUSREG_NAME_PHYSDISK_CSVSNAPSHOTAGELIMIT L"SnapshotAgeLimit"
#define CLUSREG_NAME_PHYSDISK_DISKGUID L"DiskGuid"
#define CLUSREG_NAME_PHYSDISK_VOLSNAPACTIVATETIMEOUT L"VolsnapActivateTimeout"
#define CLUSREG_NAME_STORAGESPACE_NAME L"VirtualDiskName" #define CLUSREG_NAME_STORAGESPACE_NAME L"VirtualDiskName"
#define CLUSREG_NAME_STORAGESPACE_DESCRIPTION L"VirtualDiskDescription " #define CLUSREG_NAME_STORAGESPACE_DESCRIPTION L"VirtualDiskDescription "
#define CLUSREG_NAME_STORAGESPACE_HEALTH L"VirtualDiskHealth" #define CLUSREG_NAME_STORAGESPACE_HEALTH L"VirtualDiskHealth"
#define CLUSREG_NAME_STORAGESPACE_STATE L"VirtualDiskState" #define CLUSREG_NAME_STORAGESPACE_STATE L"VirtualDiskState"
#define CLUSREG_NAME_STORAGESPACE_PROVISIONING L"VirtualDiskProvisionin g" #define CLUSREG_NAME_STORAGESPACE_PROVISIONING L"VirtualDiskProvisionin g"
#define CLUSREG_NAME_STORAGESPACE_RESILIENCYTYPE L"VirtualDiskResiliencyT ype" #define CLUSREG_NAME_STORAGESPACE_RESILIENCYTYPE L"VirtualDiskResiliencyT ype"
#define CLUSREG_NAME_STORAGESPACE_RESILIENCYCOLUMNS L"VirtualDiskResiliencyC olumns" #define CLUSREG_NAME_STORAGESPACE_RESILIENCYCOLUMNS L"VirtualDiskResiliencyC olumns"
#define CLUSREG_NAME_STORAGESPACE_RESILIENCYINTERLEAVE L"VirtualDiskResiliencyI nterleave" #define CLUSREG_NAME_STORAGESPACE_RESILIENCYINTERLEAVE L"VirtualDiskResiliencyI nterleave"
skipping to change at line 6008 skipping to change at line 6484
#define CLUSREG_NAME_STORAGESPACE_POOLNAME L"Name" #define CLUSREG_NAME_STORAGESPACE_POOLNAME L"Name"
#define CLUSREG_NAME_STORAGESPACE_POOLDESC L"Description" #define CLUSREG_NAME_STORAGESPACE_POOLDESC L"Description"
#define CLUSREG_NAME_STORAGESPACE_POOLDRIVEIDS L"DriveIds" #define CLUSREG_NAME_STORAGESPACE_POOLDRIVEIDS L"DriveIds"
#define CLUSREG_NAME_STORAGESPACE_POOLHEALTH L"Health" #define CLUSREG_NAME_STORAGESPACE_POOLHEALTH L"Health"
#define CLUSREG_NAME_STORAGESPACE_POOLSTATE L"State" #define CLUSREG_NAME_STORAGESPACE_POOLSTATE L"State"
#define CLUSREG_NAME_STORAGESPACE_POOLTOTALCAPACITY L"TotalCapacity" #define CLUSREG_NAME_STORAGESPACE_POOLTOTALCAPACITY L"TotalCapacity"
#define CLUSREG_NAME_STORAGESPACE_POOLCONSUMEDCAPACITY L"ConsumedCapacity" #define CLUSREG_NAME_STORAGESPACE_POOLCONSUMEDCAPACITY L"ConsumedCapacity"
#define CLUSREG_NAME_STORAGESPACE_POOLARBITRATE L"Arbitrate" #define CLUSREG_NAME_STORAGESPACE_POOLARBITRATE L"Arbitrate"
#define CLUSREG_NAME_STORAGESPACE_POOLREEVALTIMEOUT L"ReEvaluatePlacementTim eout" #define CLUSREG_NAME_STORAGESPACE_POOLREEVALTIMEOUT L"ReEvaluatePlacementTim eout"
#define CLUSREG_NAME_STORAGESPACE_POOLQUORUMSHARE L"PoolQuorumShare"
#define CLUSREG_NAME_STORAGESPACE_POOLQUORUMUSERACCOUNT L"PoolQuorumUserAccount"
// //
// VIP Address // VIP Address
// //
#define CLUSREG_NAME_VIP_PREFIX_LENGTH L"PrefixLength" #define CLUSREG_NAME_VIP_PREFIX_LENGTH L"PrefixLength"
#define CLUSREG_NAME_VIP_ADAPTER_NAME L"AdapterName" #define CLUSREG_NAME_VIP_ADAPTER_NAME L"AdapterName"
#define CLUSREG_NAME_VIP_ADDRESS L"Address" #define CLUSREG_NAME_VIP_ADDRESS L"Address"
#define CLUSREG_NAME_VIP_VSID L"VSID" #define CLUSREG_NAME_VIP_VSID L"VSID"
#define CLUSREG_NAME_VIP_RDID L"RDID" #define CLUSREG_NAME_VIP_RDID L"RDID"
// //
// Cloud Witness
//
#define CLUSREG_NAME_CLOUDWITNESS_PRIMARY_TOKEN L"PrimaryToken"
#define CLUSREG_NAME_CLOUDWITNESS_ACCOUNT_NAME L"AccountName"
#define CLUSREG_NAME_CLOUDWITNESS_ENDPOINT_INFO L"EndpointInfo"
#define CLOUD_WITNESS_CONTAINER_NAME L"msft-cloud-witness"
// Storage Replica
#define CLUS_NAME_RES_TYPE_SOURCE_RESID L"SourceResourceId"
#define CLUS_NAME_RES_TYPE_TARGET_RESID L"TargetResourceId"
#define CLUS_NAME_RES_TYPE_SOURCE_VOLUMES L"SourceVolumes"
#define CLUS_NAME_RES_TYPE_TARGET_VOLUMES L"TargetVolumes"
#define CLUS_NAME_RES_TYPE_DATA_RESID L"DataResourceId"
#define CLUS_NAME_RES_TYPE_LOG_RESID L"LogResourceId"
#define CLUS_NAME_RES_TYPE_LOG_VOLUME L"LogVolume"
#define CLUS_NAME_RES_TYPE_REPLICATION_GROUPID L"ReplicationGroupId"
#define CLUS_NAME_RES_TYPE_CLUSTER_GROUPID L"ClusterGroupId"
#define CLUS_NAME_RES_TYPE_REPLICATION_GROUP_TYPE L"ReplicationClusterGrou
pType"
#define CLUS_NAME_RES_TYPE_MINIMUM_LOG_SIZE L"MinimumLogSizeInBytes"
#define CLUS_NAME_RES_TYPE_UNIT_LOG_SIZE_CHANGE L"UnitOfLogSizeChangeInB
ytes"
#define CLUS_NAME_RES_TYPE_LOG_MULTIPLE L"LogSizeMultiple"
#define SR_REPLICATED_PARTITION_DISALLOW_MULTINODE_IO 0x00000001
typedef struct _SR_RESOURCE_TYPE_REPLICATED_PARTITION_INFO
{
ULONGLONG PartitionOffset; /**< Offset of the partition i
n the disk */
ULONG Capabilities; /**< Capabilities of replicate
d partition*/
} SR_RESOURCE_TYPE_REPLICATED_PARTITION_INFO, *PSR_RESOURCE_TYPE_REPLICATED_PART
ITION_INFO;
typedef struct _SR_RESOURCE_TYPE_REPLICATED_PARTITION_ARRAY
{
DWORD Count; /**< Count
of all replicated partitions on the disk*/
SR_RESOURCE_TYPE_REPLICATED_PARTITION_INFO PartitionArray[1]; /**< Variab
le size array of all replicated partitions on the disk*/
} SR_RESOURCE_TYPE_REPLICATED_PARTITION_ARRAY, *PSR_RESOURCE_TYPE_REPLICATED_PAR
TITION_ARRAY;
//
// Storage Replica structures and enums used to get replication information from
the replication resource types
//
typedef enum _SR_REPLICATED_DISK_TYPE
{
SrReplicatedDiskTypeNone = 0,
SrReplicatedDiskTypeSource = 1,
SrReplicatedDiskTypeLogSource = 2,
SrReplicatedDiskTypeDestination = 3,
SrReplicatedDiskTypeLogDestination = 4,
SrReplicatedDiskTypeNotInParthership = 5,
SrReplicatedDiskTypeLogNotInParthership = 6,
SrReplicatedDiskTypeOther
} SR_REPLICATED_DISK_TYPE, *PSR_REPLICATED_DISK_TYPE;
typedef enum _SR_DISK_REPLICATION_ELIGIBLE
{
SrDiskReplicationEligibleNone = 0,
SrDiskReplicationEligibleYes = 1,
SrDiskReplicationEligibleOffline = 2,
SrDiskReplicationEligibleNotGpt = 3,
SrDiskReplicationEligiblePartitionLayoutMismatch = 4,
SrDiskReplicationEligibleInsufficientFreeSpace = 5,
SrDiskReplicationEligibleNotInSameSite = 6,
SrDiskReplicationEligibleInSameSite = 7,
SrDiskReplicationEligibleFileSystemNotSupported = 8,
SrDiskReplicationEligibleAlreadyInReplication = 9,
SrDiskReplicationEligibleSameAsSpecifiedDisk = 10,
SrDiskReplicationEligibleOther = 9999
} SR_DISK_REPLICATION_ELIGIBLE, *PSR_DISK_REPLICATION_ELIGIBLE;
typedef struct _SR_RESOURCE_TYPE_QUERY_ELIGIBLE_LOGDISKS
{
GUID DataDiskGuid; /**< Cluster resource identifier of dat
a disk.*/
BOOLEAN IncludeOfflineDisks; /**< When TRUE, the result set includes
all the offline disks in Available Storage group.*/
} SR_RESOURCE_TYPE_QUERY_ELIGIBLE_LOGDISKS, *PSR_RESOURCE_TYPE_QUERY_ELIGIBLE_LO
GDISKS;
typedef struct _SR_RESOURCE_TYPE_ELIGIBLE_TARGET_DATADISKS
{
GUID SourceDataDiskGuid; /**< Cluster resource identifier of dat
a disk.*/
BOOLEAN SkipConnectivityCheck; /**< When TRUE, even the disks that are
connected to same nodes as the source disk are included in result set.*/
BOOLEAN IncludeOfflineDisks; /**< When TRUE, the result set includes
offline disks in Available Storage group.*/
} SR_RESOURCE_TYPE_QUERY_ELIGIBLE_TARGET_DATADISKS, *PSR_RESOURCE_TYPE_QUERY_ELI
GIBLE_TARGET_DATADISKS;
typedef struct _SR_RESOURCE_TYPE_ELIGIBLE_SOURCE_DATADISKS
{
GUID DataDiskGuid; /**< Cluster resource identifi
er of data disk.*/
BOOLEAN IncludeAvailableStoargeDisks; /**< When TRUE, the result set
includes disks in Available Storage group.*/
} SR_RESOURCE_TYPE_QUERY_ELIGIBLE_SOURCE_DATADISKS, *PSR_RESOURCE_TYPE_QUERY_ELI
GIBLE_SOURCE_DATADISKS;
typedef struct _SR_RESOURCE_TYPE_DISK_INFO
{
SR_DISK_REPLICATION_ELIGIBLE Reason; /**< Number of
disks in the result set.*/
GUID DiskGuid; /**< Cluster re
source identifier of disk.*/
} SR_RESOURCE_TYPE_DISK_INFO, *PSR_RESOURCE_TYPE_DISK_INFO;
typedef struct _SR_RESOURCE_TYPE_ELIGIBLE_DISKS_RESULT
{
USHORT Count; /**< Number of disks in the r
esult set.*/
SR_RESOURCE_TYPE_DISK_INFO DiskInfo[1]; /**< Cluster resource identif
ier and related information about the disk.*/
} SR_RESOURCE_TYPE_ELIGIBLE_DISKS_RESULT, *PSR_RESOURCE_TYPE_ELIGIBLE_DISKS_RESU
LT;
typedef struct _SR_RESOURCE_TYPE_REPLICATED_DISK
{
SR_REPLICATED_DISK_TYPE Type; /**< Type of the r
eplicated disk.*/
GUID ClusterDiskResourceGuid; /**< Cluster resou
rce identifier of disk.*/
GUID ReplicationGroupId; /**< Replication g
roup identifier.*/
WCHAR ReplicationGroupName[MAX_PATH]; /**< Name of the r
eplication group name.*/
} SR_RESOURCE_TYPE_REPLICATED_DISK, *PSR_RESOURCE_TYPE_REPLICATED_DISK;
typedef struct _SR_RESOURCE_TYPE_REPLICATED_DISKS_RESULT
{
USHORT Count; /**< Number of replicat
ed disks in the result set.*/
SR_RESOURCE_TYPE_REPLICATED_DISK ReplicatedDisks[1]; /**< Array of replicate
d disks.*/
} SR_RESOURCE_TYPE_REPLICATED_DISKS_RESULT, *PSR_RESOURCE_TYPE_REPLICATED_DISKS_
RESULT;
//
// Input structure for CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2 / C LUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2 // Input structure for CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2 / C LUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2
// //
typedef struct _CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_INPUT { typedef struct _CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_INPUT {
DWORD dwFlags; DWORD dwFlags;
GUID guidPoolFilter; GUID guidPoolFilter;
} CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_INPUT, *PCLUSCTL_RESOURC E_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_INPUT; } CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_INPUT, *PCLUSCTL_RESOURC E_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_INPUT;
#define CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_FLAG_ADD_VOLUME_IN FO 0x00000001 #define CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_FLAG_ADD_VOLUME_IN FO 0x00000001
#define CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_FLAG_FILTER_BY_POO L 0x00000002 #define CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX2_FLAG_FILTER_BY_POO L 0x00000002
skipping to change at line 6039 skipping to change at line 6630
#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"
#endif #endif
#ifndef _CLUSTER_API_TYPES_ #ifndef _CLUSTER_API_TYPES_
#define _CLUSTER_API_TYPES_ #define _CLUSTER_API_TYPES_
#endif // _CLUSTER_API_TYPES_ #endif // _CLUSTER_API_TYPES_
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PK G_CLUSTER) */
#pragma endregion #pragma endregion
#endif // _CLUSTER_API_ #endif // _CLUSTER_API_
 End of changes. 69 change blocks. 
18 lines changed or deleted 691 lines changed or added

This html diff was produced by rfcdiff 1.41.