Поделиться через


структура CLUS_STARTING_PARAMS (clusapi.h)

Указывает, является ли попытка узла запустить службу кластеров попыткой сформировать кластер или присоединиться к нему, и ранее ли узел пытался запустить эту версию службы кластеров. Библиотеки DLL ресурсов получают структуру CLUS_STARTING_PARAMS с кодами элементов управления CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1 и CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2 .

Синтаксис

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

Члены

dwSize

Размер байтов структуры.

bForm

Указывает, представляет ли конкретный запуск службы кластеров форму или операцию соединения.

TRUE

Узел, запускающий службу кластеров, пытается сформировать кластер. Другие узлы в настоящее время не активны.

Ложь.

Узел, запускающий службу кластеров, пытается присоединиться к существующему кластеру. В настоящее время активен по крайней мере еще один узел.

bFirst

Указывает, запускалась ли эта версия службы кластеров на узле.

TRUE

Узел впервые запускает версию службы кластеров.

Ложь.

Ранее узел запустил эту версию службы кластеров.

Комментарии

Структура 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 Корпоративная, Windows Server 2008 Datacenter
Верхняя часть clusapi.h

См. также раздел

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2