Partager via


structure CLUS_STARTING_PARAMS (clusapi.h)

Indique si la tentative de démarrage du service clusterd’un nœud représente une tentative de formation ou de jonction d’un cluster, et si le nœud a tenté de démarrer cette version du service cluster auparavant. Les DLL de ressources reçoivent la structure CLUS_STARTING_PARAMS avec les codes de contrôle CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1 et CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2 .

Syntaxe

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

Membres

dwSize

Taille d’octet de la structure.

bForm

Indique si ce début particulier du service de cluster représente un formulaire ou une opération de jointure.

TRUE

Le nœud qui démarre le service cluster tente de former un cluster. Aucun autre nœud n’est actuellement actif.

FALSE

Le nœud qui démarre le service cluster tente de joindre un cluster existant. Au moins un autre nœud est actuellement actif.

bFirst

Indique si cette version du service de cluster a déjà démarré sur le nœud.

TRUE

Le nœud démarre une version du service cluster pour la première fois.

FALSE

Le nœud a déjà démarré cette version du service cluster.

Remarques

La structure CLUS_STARTING_PARAMS permet aux DLL de ressources de répondre aux codes de contrôle CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1 et CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2 en fonction des circonstances du démarrage. Par exemple, une DLL peut effectuer des étapes d’initialisation spéciales lorsque le cluster se forme et effectuer un autre ensemble d’opérations en réponse aux jointures.

Exemples

L’exemple suivant illustre une implémentation abrégée de ResourceTypeControl. Pour plus d’informations, consultez Implémentation de 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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge
Serveur minimal pris en charge Windows Server 2008 Entreprise, Windows Server 2008 Datacenter
En-tête clusapi.h

Voir aussi

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE1

CLUSCTL_RESOURCE_TYPE_STARTING_PHASE2