Fonction CancelClusterGroupOperation (clusapi.h)
Permet à un client d’annuler une opération MoveClusterGroup ou MoveClusterGroupEx en attente pour un groupe. Le groupe est ensuite retourné à son état persistant.
Syntaxe
DWORD CancelClusterGroupOperation(
[in] HGROUP hGroup,
[in] DWORD dwCancelFlags_RESERVED
);
Paramètres
[in] hGroup
Handle d’un groupe de clusters.
[in] dwCancelFlags_RESERVED
Ce paramètre est réservé à une utilisation ultérieure et doit être défini sur zéro.
Valeur retournée
CancelClusterGroupOperation retourne ERROR_SUCCESS si l’opération de déplacement sur le groupe a été annulée avec succès.
CancelClusterGroupOperation retourne ERROR_IO_PENDING si l’annulation de l’opération de déplacement est en cours.
CancelClusterGroupOperation retourne un code d’erreur différent de zéro en cas d’échec de l’annulation de l’opération de déplacement du groupe sur le groupe désigné.
Remarques
CancelClusterGroupOperation tente d’annuler une opération de déplacement en attente sur un groupe de clusters émis via un appel MoveClusterGroup ou MoveClusterGroupEx qui a retourné ERROR_IO_PENDING et est toujours en cours. L’appel tente d’annuler l’opération de déplacement en attente et de ramener le groupe à son état persistant.
Exemples
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <ClusAPI.h>
#define DemoResDllTypeName L"dummy"
#define DemoGroupName L"DemoGroup"
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;
}
// Cancel Move Group example
error = MoveClusterGroupEx( hGroup,
NULL,
CLUSAPI_GROUP_MOVE_RETURN_TO_SOURCE_NODE_ON_ERROR | CLUSAPI_GROUP_MOVE_IGNORE_RESOURCE_STATUS,
NULL,
0);
if ( error == ERROR_IO_PENDING )
{
wprintf( L"Group move pending" DemoGroupName L": 0x%x\n", error );
error = ERROR_SUCCESS;
// Issuing cancel to the move operation
error = CancelClusterGroupOperation(hGroup, 0);
if ( error == ERROR_IO_PENDING || error == ERROR_SUCCESS )
{
// the cancel was registered successfully
wprintf( L"Cancel issued for move operation for the group " DemoGroupName L"\n" );
}
else
{
wprintf( L"Failed to Cancel move operation for the group " DemoGroupName L": 0x%x\n" );
}
}
else if ( error != ERROR_SUCCESS)
{
wprintf( L"Failed to move group" DemoGroupName L": 0x%x\n", error );
}
else
{
wprintf( L"Group move completed" DemoGroupName L": 0x%x\n");
}
Cleanup:
if ( hGroup != NULL )
{
CloseClusterGroup( hGroup );
hGroup = NULL;
}
if ( hCluster != NULL )
{
CloseCluster( hCluster );
hCluster = NULL;
}
return (int)error;
}
Configuration requise
Condition requise | Valeur |
---|---|
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 |