Función CancelClusterGroupOperation (clusapi.h)
Permite a un cliente cancelar una operación MoveClusterGroup o MoveClusterGroupEx que está pendiente para un grupo. A continuación, el grupo se devuelve a su estado persistente.
Sintaxis
DWORD CancelClusterGroupOperation(
[in] HGROUP hGroup,
[in] DWORD dwCancelFlags_RESERVED
);
Parámetros
[in] hGroup
Identificador de un grupo de clústeres.
[in] dwCancelFlags_RESERVED
Este parámetro está reservado para uso futuro y debe establecerse en cero.
Valor devuelto
CancelClusterGroupOperation devuelve ERROR_SUCCESS si la operación de movimiento en el grupo se canceló correctamente.
CancelClusterGroupOperation devuelve ERROR_IO_PENDING si la cancelación de la operación de traslado está en curso.
CancelClusterGroupOperation devuelve un código de error distinto de cero si se produjo un error al emitir la cancelación de la operación de grupo de movimiento en el grupo designado.
Comentarios
CancelClusterGroupOperation intenta cancelar una operación de movimiento pendiente en un grupo de clústeres que se emitió a través de una llamada MoveClusterGroup o MoveClusterGroupEx que devolvió ERROR_IO_PENDING y sigue en curso. La llamada intenta cancelar la operación de movimiento pendiente y llevar el grupo a su estado persistente.
Ejemplos
#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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | No se admite ninguno |
Servidor mínimo compatible | Windows Server 2012 |
Plataforma de destino | Windows |
Encabezado | clusapi.h |
Library | ClusAPI.lib |
Archivo DLL | ClusAPI.dll |