OfflineClusterGroupEx, fonction (clusapi.h)
Étend la méthode OfflineClusterGroup . Le client peut utiliser les indicateurs pour contrôler les stratégies de basculement du groupe et la mémoire tampon d’entrée pour envoyer des instructions spécifiques pour l’opération hors connexion aux ressources du groupe cible. Par instance, la mémoire tampon d’entrée peut être utilisée pour demander à une machine virtuelle de passer hors connexion en enregistrant son état au lieu de l’arrêter.
Syntaxe
DWORD OfflineClusterGroupEx(
[in] HGROUP hGroup,
[in] DWORD dwOfflineFlags,
PBYTE lpInBuffer,
[in] DWORD cbInBufferSize
);
Paramètres
[in] hGroup
Handle d’un groupe de clusters.
[in] dwOfflineFlags
Indicateurs qui influencent la stratégie hors connexion. Avec 0x0, la valeur suivante est acceptable : CLUSAPI_GROUP_OFFLINE_IGNORE_RESOURCE_LOCKED_STATUS (0x00000001) : ignorer si une ressource a indiqué qu’elle doit être « verrouillée » dans son état actuel.
lpInBuffer
Contient des instructions pour l’opération hors connexion qui ciblent des ressources spécifiques au sein du groupe. lpInBuffer est mis en forme en tant que liste de propriétés, ce qui signifie que les instructions sont contenues dans les valeurs de propriété. Les ressources du groupe recherchent dans la liste des propriétés les noms de propriétés qu’elles prennent en charge pour les opérations hors connexion, puis interprètent les instructions dans la valeur de propriété associée. Notez que les propriétés prises en charge par une ressource dans une opération OfflineClusterGroupEx ne sont pas liées aux propriétés privées associées à une ressource.
[in] cbInBufferSize
Taille de lpInBuffer, en octets.
Valeur retournée
OfflineClusterGroupEx retourne ERROR_IO_PENDING si la commande hors connexion a été acceptée et est en cours. OfflineClusterGroupEx retourne un code d’erreur différent de zéro si la commande hors connexion a été rejetée immédiatement sans modification de l’état du groupe.
Remarques
OfflineClusterGroupEx échoue immédiatement avec une erreur ERROR_CLUSTER_RESOURCE_LOCKED_STATUS si l’indicateur CLUSAPI_OFFLINE_GROUP_IGNORE_RESOURCE_LOCKED_STATUS n’est pas défini et qu’une ressource du groupe a indiqué qu’elle est « verrouillée » dans son état actuel.
À l’instar de MoveClusterGroupEx, si OfflineClusterGroupEx retourne ERROR_IO_PENDING, le service de cluster tente d’amener le groupe à l’état hors connexion.
OfflineClusterGroupEx nécessite que le client dispose d’un accès complet dans le descripteur de sécurité du cluster.
Exemples
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <ClusAPI.h>
#define DemoResDllTypeName L"dummy"
#define DemoGroupName L"DemoGroup"
BOOL WaitForGroupToGoOffline(__in HGROUP hGroup)
{
for(;;)
{
CLUSTER_GROUP_STATE state = GetClusterGroupState( hGroup, NULL, NULL );
if( state == ClusterGroupFailed || state == ClusterGroupPartialOnline || state == ClusterGroupOnline)
{
return false;
}
else if ( state == ClusterGroupOffline )
{
return true;
}
Sleep(100);
}
}
int __cdecl main( void )
{
HCLUSTER hCluster= NULL;
HGROUP hGroup = NULL;
DWORD error = 0;
hCluster = OpenCluster( NULL );
if ( hCluster == NULL )
{
error = GetLastError();
wprintf( L"Failed to open cluster: 0x%x\n", error );
goto Cleanup;
}
hGroup = OpenClusterGroup( hCluster, DemoGroupName );
if ( hGroup == NULL )
{
error = GetLastError();
wprintf( L"Failed to open cluster group " DemoGroupName L": 0x%x\n", error );
goto Cleanup;
}
// Offlining Group example
error = OfflineClusterGroupEx(hGroup, CLUSAPI_GROUP_OFFLINE_IGNORE_RESOURCE_STATUS, NULL, 0);
if ( error == ERROR_IO_PENDING )
{
if (WaitForGroupToGoOffline(hGroup))
{
error = ERROR_SUCCESS;
}
}
if ( error )
{
wprintf( L"Failed to offline the group" DemoGroupName L": 0x%x\n", error );
goto Cleanup;
}
else
{
wprintf( L"Offlined the group" DemoGroupName);
}
Cleanup:
if ( hGroup != NULL )
{
CloseClusterGroup( hGroup );
hGroup = NULL;
}
if ( hCluster != NULL )
{
CloseCluster( hCluster );
hCluster = NULL;
}
return (int)error;
}
Configuration requise
Client minimal pris en charge | Aucun pris en charge |
Serveur minimal pris en charge | Windows Server 2012 |
Plateforme cible | Windows |
En-tête | clusapi.h |
Bibliothèque | ClusAPI.lib |
DLL | ClusAPI.dll |