Partager via


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