共用方式為


offlineClusterResourceEx 函式 (clusapi.h)

擴充 OfflineClusterResource 方法。 用戶端可以使用 旗標來控制資源的原則,以及輸入緩衝區,將脫機作業的特定指示傳送至資源。 例如,輸入緩衝區可用來指示 VM 藉由儲存其狀態而不是關閉來離線。

語法

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

參數

[in] hResource

叢集資源的句柄。

[in] dwOfflineFlags

影響脫機原則的旗標。

此參數可以設定為下列一或多個值:

CLUSAPI_RESOURCE_OFFLINE_IGNORE_RESOURCE_STATUS (0x00000001)

如果資源已鎖定,請忽略資源的狀態。

CLUSAPI_RESOURCE_OFFLINE_FORCE_WITH_TERMINATION (0x00000002)

資源會標示為無法使用並關閉,而不需要等待清除程式完成。

CLUSAPI_RESOURCE_OFFLINE_REASON_NONE (0x00000000)

未指定旗標。

Windows Server 2012:Windows Server 2012 R2 之前不支援此值。

CLUSAPI_RESOURCE_OFFLINE_REASON_UNKNOWN (0x00000001)

原因不明。

Windows Server 2012:Windows Server 2012 R2 之前不支援此值。

CLUSAPI_RESOURCE_OFFLINE_REASON_MOVING (0x00000002)

資源正在移至另一個節點。

Windows Server 2012:Windows Server 2012 R2 之前不支援此值。

CLUSAPI_RESOURCE_OFFLINE_REASON_USER_REQUESTED (0x00000004)

使用者要求讓資源離線。

Windows Server 2012:Windows Server 2012 R2 之前不支援此值。

CLUSAPI_RESOURCE_OFFLINE_REASON_BEING_DELETED (0x00000008)

正在刪除資源。

Windows Server 2012:Windows Server 2012 R2 之前不支援此值。

CLUSAPI_RESOURCE_OFFLINE_REASON_BEING_RESTARTED (0x00000010)

正在重新啟動資源。

Windows Server 2012:Windows Server 2012 R2 之前不支援此值。

CLUSAPI_RESOURCE_OFFLINE_REASON_PREEMPTED (0x00000020)

資源發生先佔式失敗。

Windows Server 2012:Windows Server 2012 R2 之前不支援此值。

CLUSAPI_RESOURCE_OFFLINE_REASON_SHUTTING_DOWN (0x00000040)

資源正在關閉。

Windows Server 2012:Windows Server 2012 R2 之前不支援此值。

[in] lpInBuffer

包含以特定資源為目標之離線作業的指示。 lpInBuffer 會格式化為屬性清單,這表示指令包含在屬性值中。 資源 DLL 會在屬性清單中搜尋它支援離線作業的屬性名稱,然後解譯相關聯屬性值中的指示。 請注意, OfflineClusterResourceEx 作業中資源所支援的屬性與與資源相關聯的私人屬性無關。

[in] cbInBufferSize

lpInBuffer 的大小,以位元組為單位。

傳回值

如果已接受離線命令且正在進行中,OfflineClusterResourceEx 會傳回ERROR_IO_PENDING。 OfflineClusterResourceEx 會傳回非零的錯誤碼,如果脫機命令立即遭到拒絕,且不會變更資源狀態。

備註

如果未設定CLUSAPI_RESOURCE_OFFLINE_IGNORE_RESOURCE_LOCKED_STATUS旗標,且資源指出其目前狀態為「已鎖定」OfflineClusterResourceEx 會立即失敗,並出現錯誤ERROR_CLUSTER_RESOURCE_LOCKED_STATUS

類似於 MoveClusterGroupEx,如果 OfflineClusterResourceEx 傳回 ERROR_IO_PENDING,則叢集服務會嘗試讓資源進入離線狀態。

OfflineClusterResourceEx 要求客戶端獲得叢集安全性描述元中的完整存取權。

範例

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

規格需求

需求
最低支援的用戶端 都不支援
最低支援的伺服器 Windows Server 2012
目標平台 Windows
標頭 clusapi.h
程式庫 ClusAPI.lib
Dll ClusAPI.dll