Partager via


Méthode IDataModelManager2 ::AcquireNamedModel (dbgmodel.h)

AcquireNamedModel recherche un nom de modèle bien connu et retourne le modèle de données inscrit par ce nom. Notez que si aucun modèle n’est inscrit par le nom fourni, un stub est créé et retourné à l’appelant.

Tout ce qui est ajouté au stub est ajouté à l’objet réel au moment où une inscription est effectuée.

Syntaxe

HRESULT AcquireNamedModel(
  PCWSTR       modelName,
  IModelObject **modelObject
);

Paramètres

modelName

Nom pour lequel rechercher un modèle de données inscrit.

modelObject

Le modèle de données qui a été inscrit sous le nom donné par l’argument modelName est retourné ici. Si aucun modèle de données de ce type n’est inscrit, un objet stub est créé, inscrit temporairement sous le nom donné par l’argument modelName et retourné ici. Si tel est le cas, lorsque l’objet réel est inscrit via un appel à la méthode RegisterNamedModel, les modifications qui ont été apportées à l’objet stub sont, en fait, déplacées vers le modèle de données réel.

Valeur retournée

Cette méthode retourne HRESULT.

Remarques

Un appelant qui souhaite étendre un modèle de données inscrit sous un nom donné appelle la méthode AcquireNamedModel afin de récupérer l’objet du modèle de données qu’il souhaite étendre. Cette méthode retourne tout modèle de données inscrit via un appel antérieur à la méthode RegisterNamedModel.

Étant donné que l’objectif principal de la méthode AcquireNamedModel est d’étendre le modèle, cette méthode a un comportement spécial si aucun modèle n’a encore été inscrit sous le nom donné. Si aucun modèle n’a encore été inscrit sous le nom donné, un objet stub est créé, enregistré temporairement sous le nom donné et retourné à l’appelant. Lorsque le modèle de données réel est inscrit via un appel à la méthode RegisterNamedModel, toutes les modifications apportées à l’objet stub sont, en fait, apportées au modèle réel. Cela supprime de nombreux problèmes de dépendance d’ordre de chargement des composants qui s’étendent les uns les autres.

Exemple de Code

ComPtr<IDataModelManager2> spManager;    /* get the data model manager */
ComPtr<IModelObject> spExtensionModel;  /* create a data model object you want 
                                           to use as an extension (see
                                           CreateDataModelObject) */

// Get the process model so we can extend it
ComPtr<IModelObject> spProcessModel;
if (SUCCEEDED(spManager->AcquireNamedModel(L"Debugger.Models.Process", 
                                           &spProcessModel)))
{
    // We have the process model and can extend it.  Even if the name we queried 
    // for is *NOT* yet registered, we can extend what gets returned (a stub)
    // and the extensions on it will be moved to the real object 
    // once RegisterNamedModel() is called.
    if (SUCCEEDED(spProcessModel->AddParentModel(spExtensionModel.Get(), 
                                                 nullptr, 
                                                 false)))
    {
        // We have successfully extended the debugger's concept of a 
        // process with whatever we have in spExtensionModel!
    }
}

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDataModelManager2