структура 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 |