Partager via


IDataModelManager4 ::AcquireNamedModel, méthode (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 s’il n’existe aucun modèle 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éé, enregistré 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 apportées à l’objet stub sont, en effet, déplacées vers le modèle de données réel.

Valeur de retour

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 pour le modèle de données qu’il souhaite étendre. Cette méthode retourne le modèle de données inscrit via un appel antérieur à la méthode RegisterNamedModel.

Comme 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 effet, apportées au modèle réel. Cela supprime de nombreux problèmes de dépendance de l’ordre de charge des composants qui s’étendent les uns les autres.

exemple de code

ComPtr<IDataModelManager4> 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!
    }
}

Exigences

Exigence Valeur
d’en-tête dbgmodel.h

Voir aussi

interface IDataModelManager4