次の方法で共有


CLUS_STARTING_PARAMS 構造体 (clusapi.h)

クラスター サービスを開始する ノードの 試行が 、クラスター の形成または参加の試行を表す かどうか、およびノードがこのバージョンのクラスター サービスの開始を以前に試行したかどうかを示します。 リソース DLL は 、CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1と CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2 制御コードを含む CLUS_STARTING_PARAMS 構造を受け取ります。

構文

typedef struct CLUS_STARTING_PARAMS {
  DWORD dwSize;
  BOOL  bForm;
  BOOL  bFirst;
} CLUS_STARTING_PARAMS, *PCLUS_STARTING_PARAMS;

メンバー

dwSize

構造体のバイト サイズ。

bForm

クラスター サービスのこの特定の開始がフォームまたは結合操作を表すかどうかを示します。

TRUE

クラスター サービスを開始するノードがクラスターを形成しようとしています。 現在アクティブなノードは他にありません。

FALSE

クラスター サービスを開始するノードが、既存のクラスターに参加しようとしています。 少なくとも 1 つの他のノードが現在アクティブです。

bFirst

このバージョンのクラスター サービスがノードで開始されたかどうかを示します。

TRUE

ノードは、クラスター サービスのバージョンを初めて開始しています。

FALSE

ノードは、以前にこのバージョンのクラスター サービスを開始しました。

注釈

CLUS_STARTING_PARAMS構造を使用すると、リソース DLL がCLUSCTL_RESOURCE_TYPE_STARTING_PHASE1に応答し、開始の状況に基づいて制御コードをCLUSCTL_RESOURCE_TYPE_STARTING_PHASE2できます。 たとえば、DLL は、クラスターが形成されるときに特別な初期化手順を実行し、結合に応答して別の一連の操作を実行する場合があります。

次の例は、 ResourceTypeControl の省略された実装を示しています。 詳細については、「 ResourceTypeControl の実装」を参照してください。

const LPWSTR g_MY_RESOURCE_TYPE_NAME[] =
{
    L"MyType_0",
    L"MyType_1",
    L"MyType_2",
    L"MyType_3"
};

DWORD WINAPI MyDllResourceTypeControl(
    IN LPCWSTR ResourceTypeName,
    IN DWORD ControlCode,
    IN PVOID InBuffer,
    IN DWORD InBufferSize,
    OUT PVOID OutBuffer,
    IN DWORD OutBufferSize,
    OUT LPDWORD BytesReturned
)
{
    DWORD status;
    PCLUS_STARTING_PARAMS pStart;

    switch ( ControlCode )
    {
        case CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1:

            if( lstrcmpi( ResourceTypeName, g_MY_RESOURCE_TYPE_NAME[2] ) == 0 )
            {
                pStart = (PCLUS_STARTING_PARAMS) InBuffer;
                if( ( pStart->bForm == TRUE ) && 
                    ( pStart->bFirst == FALSE ) )
                {
                //  Hypothetical initialization code for resource type "MyType_2"
                //  Fires only when the cluster forms, but not for first-time launches of the Cluster service.
                }
            }
            else
            {
                status = ERROR_INVALID_FUNCTION;
            }

            break;

        case CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2:

            pStart = (PCLUS_STARTING_PARAMS) InBuffer;
            if( pStart->bFirst == TRUE )
            {
            //  Hypothetical verification code for all resource types supported by the DLL
            //  Fires for first-time launches of the Cluster service
            }
            else
            {
                status = ERROR_INVALID_FUNCTION;
            }

            break;

    //  case ( Other control codes )....
    //      ...
    //      break;

        default:
            status = ERROR_INVALID_FUNCTION;
            break;

    }
    // end switch

    return( status );

}
// MyDllResourceTypeControl

要件

要件
サポートされている最小のクライアント サポートなし
サポートされている最小のサーバー Windows Server 2008 Enterprise、Windows Server 2008 Datacenter
Header clusapi.h

こちらもご覧ください

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2