Condividi tramite


Funzione CancelClusterGroupOperation (clusapi.h)

Consente a un client di annullare un'operazione MoveClusterGroup o MoveClusterGroupEx in sospeso per un gruppo. Il gruppo viene quindi restituito allo stato permanente.

Sintassi

DWORD CancelClusterGroupOperation(
  [in] HGROUP hGroup,
  [in] DWORD  dwCancelFlags_RESERVED
);

Parametri

[in] hGroup

Handle di un gruppo di cluster.

[in] dwCancelFlags_RESERVED

Questo parametro è riservato per uso futuro e deve essere impostato su zero.

Valore restituito

CancelClusterGroupOperation restituisce ERROR_SUCCESS se l'operazione di spostamento sul gruppo è stata annullata correttamente.

CancelClusterGroupOperation restituisce ERROR_IO_PENDING se l'annullamento dell'operazione di spostamento è ora in corso.

CancelClusterGroupOperation restituisce un codice di errore diverso da zero se si è verificato un errore durante l'esecuzione dell'annullamento per l'operazione di spostamento del gruppo nel gruppo designato.

Commenti

CancelClusterGroupOperation tenta di annullare un'operazione di spostamento in sospeso in un gruppo di cluster rilasciato tramite una chiamata MoveClusterGroup o MoveClusterGroupEx che ha restituito ERROR_IO_PENDING ed è ancora in corso. La chiamata tenta di annullare l'operazione di spostamento in sospeso e di portare il gruppo allo stato permanente.

Esempio

#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;
}

Requisiti

Requisito Valore
Client minimo supportato Nessuno supportato
Server minimo supportato Windows Server 2012
Piattaforma di destinazione Windows
Intestazione clusapi.h
Libreria ClusAPI.lib
DLL ClusAPI.dll