Freigeben über


CancelClusterGroupOperation-Funktion (clusapi.h)

Ermöglicht einem Client das Abbrechen eines MoveClusterGroup - oder MoveClusterGroupEx-Vorgangs , der für eine Gruppe aussteht. Die Gruppe wird dann in ihren persistenten Zustand zurückgegeben.

Syntax

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

Parameter

[in] hGroup

Das Handle für eine Clustergruppe.

[in] dwCancelFlags_RESERVED

Dieser Parameter ist für die zukünftige Verwendung reserviert und muss auf 0 (null) festgelegt werden.

Rückgabewert

CancelClusterGroupOperation gibt ERROR_SUCCESS zurück, wenn der Verschiebungsvorgang für die Gruppe erfolgreich abgebrochen wurde.

CancelClusterGroupOperation gibt ERROR_IO_PENDING zurück, wenn der Abbruch des Verschiebungsvorgangs jetzt ausgeführt wird.

CancelClusterGroupOperation gibt einen anderen Fehlercode ungleich null zurück, wenn ein Fehler aufgetreten ist, der den Abbruch für den Vorgang zum Verschieben einer Gruppe für die angegebene Gruppe ausgibt.

Hinweise

CancelClusterGroupOperation versucht, einen ausstehenden Verschiebungsvorgang für eine Clustergruppe abzubrechen, die über einen MoveClusterGroup- oder MoveClusterGroupEx-Aufruf ausgegeben wurde, der ERROR_IO_PENDING zurückgegeben hat und noch ausgeführt wird. Der Aufruf versucht, den ausstehenden Verschiebungsvorgang abzubrechen und die Gruppe in ihren persistenten Zustand zu versetzen.

Beispiele

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Nicht unterstützt
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Windows
Kopfzeile clusapi.h
Bibliothek ClusAPI.lib
DLL ClusAPI.dll