CLUS_STARTING_PARAMS-Struktur (clusapi.h)
Gibt an, ob der Versuch eines Knotens , den Clusterdienst zu starten, einen Versuch darstellt, einen Cluster zu bilden oder einem Cluster beizutreten, und ob der Knoten zuvor versucht hat, diese Version des Clusterdiensts zu starten. Ressourcen-DLLs erhalten die CLUS_STARTING_PARAMS-Struktur mit den CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1- und CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2-Steuerungscodes.
Syntax
typedef struct CLUS_STARTING_PARAMS {
DWORD dwSize;
BOOL bForm;
BOOL bFirst;
} CLUS_STARTING_PARAMS, *PCLUS_STARTING_PARAMS;
Member
dwSize
Bytegröße der Struktur.
bForm
Gibt an, ob dieser bestimmte Start des Clusterdiensts ein Formular oder einen Joinvorgang darstellt.
true
Der Knoten, der den Clusterdienst startet, versucht, einen Cluster zu bilden. Derzeit sind keine anderen Knoten aktiv.
FALSE
Der Knoten, der den Clusterdienst startet, versucht, einem vorhandenen Cluster beizutreten. Mindestens ein anderer Knoten ist derzeit aktiv.
bFirst
Gibt an, ob diese Version des Clusterdiensts jemals auf dem Knoten gestartet wurde.
true
Der Knoten startet zum ersten Mal eine Version des Clusterdiensts.
FALSE
Der Knoten hat diese Version des Clusterdiensts zuvor gestartet.
Hinweise
Die CLUS_STARTING_PARAMS-Struktur ermöglicht es Ressourcen-DLLs, basierend auf den Startbedingungen auf die CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1 und CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2 Kontrollcodes zu reagieren. Beispielsweise kann eine DLL spezielle Initialisierungsschritte ausführen, wenn der Cluster erstellt wird, und eine weitere Gruppe von Vorgängen als Reaktion auf Verknüpfungen ausführen.
Beispiele
Das folgende Beispiel veranschaulicht eine verkürzte Implementierung von ResourceTypeControl. Weitere Informationen finden Sie unter Implementieren von 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
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Nicht unterstützt |
Unterstützte Mindestversion (Server) | Windows Server 2008 Enterprise, Windows Server 2008 Datacenter |
Kopfzeile | clusapi.h |