Freigeben über


OfflineClusterResourceEx-Funktion (clusapi.h)

Erweitert die OfflineClusterResource-Methode . Der Client kann die Flags verwenden, um richtlinien der Ressource zu steuern, und den Eingabepuffer, um bestimmte Anweisungen für den Offlinevorgang an die Ressource zu senden. Für instance kann der Eingabepuffer verwendet werden, um eine VM anzuweisen, offline zu gehen, indem der Zustand gespeichert wird, anstatt herunterzufahren.

Syntax

DWORD OfflineClusterResourceEx(
  [in] HRESOURCE hResource,
  [in] DWORD     dwOfflineFlags,
  [in] PBYTE     lpInBuffer,
  [in] DWORD     cbInBufferSize
);

Parameter

[in] hResource

Das Handle für eine Clusterressource.

[in] dwOfflineFlags

Flags, die die Offlinerichtlinie beeinflussen.

Dieser Parameter kann auf einen oder mehrere der folgenden Werte festgelegt werden:

CLUSAPI_RESOURCE_OFFLINE_IGNORE_RESOURCE_STATUS (0x00000001)

Ignorieren Sie die status der Ressource, wenn die Ressource gesperrt ist.

CLUSAPI_RESOURCE_OFFLINE_FORCE_WITH_TERMINATION (0x00000002)

Die Ressource muss als nicht verfügbar markiert und heruntergefahren werden, ohne auf den Abschluss des Bereinigungsprozesses zu warten.

CLUSAPI_RESOURCE_OFFLINE_REASON_NONE (0x00000000)

Es wurden keine Flags angegeben.

Windows Server 2012: Dieser Wert wird vor Windows Server 2012 R2 nicht unterstützt.

CLUSAPI_RESOURCE_OFFLINE_REASON_UNKNOWN (0x00000001)

Der Grund ist unbekannt.

Windows Server 2012: Dieser Wert wird vor Windows Server 2012 R2 nicht unterstützt.

CLUSAPI_RESOURCE_OFFLINE_REASON_MOVING (0x00000002)

Die Ressource wird auf einen anderen Knoten verschoben.

Windows Server 2012: Dieser Wert wird vor Windows Server 2012 R2 nicht unterstützt.

CLUSAPI_RESOURCE_OFFLINE_REASON_USER_REQUESTED (0x00000004)

Es gab eine Benutzeranforderung, die Ressource offline zu schalten.

Windows Server 2012: Dieser Wert wird vor Windows Server 2012 R2 nicht unterstützt.

CLUSAPI_RESOURCE_OFFLINE_REASON_BEING_DELETED (0x00000008)

Die Ressource wird gelöscht.

Windows Server 2012: Dieser Wert wird vor Windows Server 2012 R2 nicht unterstützt.

CLUSAPI_RESOURCE_OFFLINE_REASON_BEING_RESTARTED (0x00000010)

Die Ressource wird neu gestartet.

Windows Server 2012: Dieser Wert wird vor Windows Server 2012 R2 nicht unterstützt.

CLUSAPI_RESOURCE_OFFLINE_REASON_PREEMPTED (0x00000020)

Bei der Ressource ist ein präemptiver Fehler aufgetreten.

Windows Server 2012: Dieser Wert wird vor Windows Server 2012 R2 nicht unterstützt.

CLUSAPI_RESOURCE_OFFLINE_REASON_SHUTTING_DOWN (0x00000040)

Die Ressource wird heruntergefahren.

Windows Server 2012: Dieser Wert wird vor Windows Server 2012 R2 nicht unterstützt.

[in] lpInBuffer

Enthält Anweisungen für den Offlinevorgang, die auf die jeweilige Ressource ausgerichtet sind. lpInBuffer ist als Eigenschaftenliste formatiert, was bedeutet, dass die Anweisungen in Eigenschaftswerten enthalten sind. Die Ressourcen-DLL durchsucht die Eigenschaftenliste nach Eigenschaftennamen, die sie für Offlinevorgänge unterstützt, und interpretiert dann die Anweisungen im zugeordneten Eigenschaftswert. Beachten Sie, dass die eigenschaften, die von einer Ressource in einem OfflineClusterResourceEx-Vorgang unterstützt werden, nicht mit den privaten Eigenschaften verknüpft sind, die einer Ressource zugeordnet sind.

[in] cbInBufferSize

Die Größe von lpInBuffer in Bytes.

Rückgabewert

OfflineClusterResourceEx gibt ERROR_IO_PENDING zurück, wenn der Offlinebefehl akzeptiert wurde und ausgeführt wird. OfflineClusterResourceEx gibt einen Fehlercode ungleich null zurück, wenn der Offlinebefehl sofort ohne Änderungen am Ressourcenstatus abgelehnt wurde.

Hinweise

OfflineClusterResourceEx schlägt sofort mit fehler ERROR_CLUSTER_RESOURCE_LOCKED_STATUS fehl, wenn das CLUSAPI_RESOURCE_OFFLINE_IGNORE_RESOURCE_LOCKED_STATUS-Flag nicht festgelegt ist und die Ressource angegeben hat, dass sie im aktuellen Zustand "gesperrt" ist.

Ähnlich wie bei MoveClusterGroupEx versucht der Clusterdienst, die Ressource in den Offlinezustand zu versetzen, wenn OfflineClusterResourceExERROR_IO_PENDING zurückgibt.

OfflineClusterResourceEx erfordert, dass dem Client Vollzugriff im Clustersicherheitsdeskriptor gewährt wird.

Beispiele

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <ClusAPI.h>


#define DemoResDllTypeName L"dummy"
#define DemoResourceName L"DemoResource"


BOOL WaitForResourceToGoOffline(__in HRESOURCE hResource)
{
    for(;;)
    {
        CLUSTER_RESOURCE_STATE state = GetClusterResourceState( hResource, NULL, 0, NULL, 0 );
        if( state == ClusterResourceOnline || state == ClusterResourceFailed)
        {
            return false;
        }
        else if ( state == ClusterResourceOffline )
        {
            return true;
        }

        Sleep(100);
    }
}

int __cdecl main( void )
{
    HCLUSTER hCluster= NULL;
    HRESOURCE hResource = NULL;
    DWORD error = 0;
    
    hCluster = OpenCluster( NULL );
    if ( hCluster == NULL )
    {
        error = GetLastError();
        wprintf( L"Failed to open cluster: 0x%x\n", error );
        goto Cleanup;
    }

    hResource = OpenClusterResource( hCluster, DemoResourceName );
    if ( hResource == NULL )
    {
        error = GetLastError();
        wprintf( L"Failed to open cluster resource " DemoResourceName L": 0x%x\n", error );
        goto Cleanup;
    }

    // Offlining Resource example
    error = OfflineClusterResourceEx(hResource, CLUSAPI_RESOURCE_OFFLINE_IGNORE_RESOURCE_STATUS, NULL, 0);
    if ( error == ERROR_IO_PENDING  )
    {
        if (WaitForResourceToGoOffline(hResource))
        {
            error = ERROR_SUCCESS;
        }
    }
    if ( error )
    {
        wprintf( L"Failed to offline the resource" DemoResourceName L": 0x%x\n", error );
        goto Cleanup;
    }
    else
    {
        wprintf( L"Offlined the resource" DemoResourceName);
    }


Cleanup:

    if ( hResource != NULL )
    {
        CloseClusterResource( hResource );
        hResource = 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