共用方式為


OfflineClusterGroupEx 函式 (clusapi.h)

擴充 OfflineClusterGroup 方法。 用戶端可以使用 旗標來控制群組的容錯移轉原則,以及輸入緩衝區,將離線作業的特定指示傳送至目標群組中的資源。 例如,輸入緩衝區可用來指示虛擬機器藉由儲存其狀態而不是關閉而離線。

語法

DWORD OfflineClusterGroupEx(
  [in] HGROUP hGroup,
  [in] DWORD  dwOfflineFlags,
       PBYTE  lpInBuffer,
  [in] DWORD  cbInBufferSize
);

參數

[in] hGroup

叢集群組的控制碼。

[in] dwOfflineFlags

影響離線原則的旗標。 除了0x0之外,以下是可接受的值: CLUSAPI_GROUP_OFFLINE_IGNORE_RESOURCE_LOCKED_STATUS (0x00000001) :如果資源已指出其目前狀態應該「鎖定」,則忽略。

lpInBuffer

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

[in] cbInBufferSize

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

傳回值

如果已接受離線命令且正在進行中,OfflineClusterGroupEx會傳回ERROR_IO_PENDING。 OfflineClusterGroupEx 如果離線命令立即遭到拒絕,且群組狀態沒有變更,則會傳回非零的錯誤碼。

備註

如果未設定CLUSAPI_OFFLINE_GROUP_IGNORE_RESOURCE_LOCKED_STATUS旗標,且群組中的任何資源已指出其目前狀態為「鎖定」,OfflineClusterGroupEx就會立即失敗,並出現錯誤ERROR_CLUSTER_RESOURCE_LOCKED_STATUS

類似于 MoveClusterGroupEx,如果 OfflineClusterGroupEx 傳回 ERROR_IO_PENDING,則叢集服務會嘗試將群組帶入離線狀態。

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

範例

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


#define DemoResDllTypeName L"dummy"
#define DemoGroupName L"DemoGroup"


BOOL WaitForGroupToGoOffline(__in HGROUP hGroup)
{
    for(;;)
    {
        CLUSTER_GROUP_STATE state = GetClusterGroupState( hGroup, NULL, NULL );
        if( state == ClusterGroupFailed || state == ClusterGroupPartialOnline || state == ClusterGroupOnline)
        {
            return false;
        }
        else if ( state == ClusterGroupOffline )
        {
            return true;
        }

        Sleep(100);
    }
}

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

    // Offlining Group example
    error = OfflineClusterGroupEx(hGroup, CLUSAPI_GROUP_OFFLINE_IGNORE_RESOURCE_STATUS, NULL, 0);
    if ( error == ERROR_IO_PENDING  )
    {
        if (WaitForGroupToGoOffline(hGroup))
        {
            error = ERROR_SUCCESS;
        }
    }
    if ( error )
    {
        wprintf( L"Failed to offline the group" DemoGroupName L": 0x%x\n", error );
        goto Cleanup;
    }
    else
    {
        wprintf( L"Offlined the group" DemoGroupName);
    }


Cleanup:

    if ( hGroup != NULL )
    {
        CloseClusterGroup( hGroup );
        hGroup = NULL;
    }
    if ( hCluster != NULL )
    {
        CloseCluster( hCluster );
        hCluster = NULL;
    }

    return (int)error;
}

規格需求

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