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 |