Freigeben über


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

Weitere Informationen

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2