Méthode IDataModelManager2 ::RegisterNamedModel (dbgmodel.h)
La méthode RegisterNamedModel inscrit un modèle de données donné sous un nom bien connu afin qu’il puisse être trouvé par les clients souhaitant l’étendre. Il s’agit de l’objectif principal de l’API : publier un modèle de données en tant que quelque chose qui peut être étendu en récupérant le modèle inscrit sous ce nom bien connu et en y ajoutant un modèle parent. Bien que la chaîne transmise dans l’argument modelName puisse être n’importe quoi (il s’agit simplement d’un nom), il existe une convention selon laquelle elle ressemble à un espace de noms séparé par points de la forme suivante :
• Debugger.Models.* - Data models which pertain to the debug target.
• DataModel.Models.* - Data models which pertain to the core data model itself.
o DataModel.Models.Concepts.* - Data models which pertain to concepts in the data model.
Un exemple de ce nom est Debugger.Models.Process. Il s’agit du nom sous lequel la notion de processus du débogueur est inscrite. Un client qui étend le processus et qui est lui-même extensible peut inscrire son point d’extensibilité en tant que Debugger.Models.Process.NamedExtensionPoint où NamedExtensionPoint fait référence à la sémantique ajoutée au processus.
Notez que si un modèle de données donné est inscrit sous un nom, l’implémentation de IDataModelConcept pour ce modèle de données doit avoir une méthode GetName qui retourne le nom inscrit via l’appel de cette méthode RegisterNamedModel.
Syntaxe
HRESULT RegisterNamedModel(
PCWSTR modelName,
IModelObject *modeObject
);
Paramètres
modelName
L’espace de noms racine du modèle de données est retourné ici.
modeObject
Modèle de données inscrit.
Valeur retournée
Cette méthode retourne HRESULT qui indique la réussite ou l’échec.
Remarques
Exemple de Code
ComPtr<IDataModelManager2> spManager; /* get the data model manager */
ComPtr<IModelObject> spDataModelObject; /* get your data model object (see
CreateDataModelObject) */
// If the model is registered under a name (e.g.:
// Debugger.Models.Process.PrivateProcessExtension as below), the
// IDataModelConcept::GetName method must return one of the registration
// names (the one the extension considers "canonical"). It is legal for an
// object to be registered under multiple names.
if (SUCCEEDED(spManager->RegisterNamedModel(
L"Debugger.Models.Process.PrivateProcessExtension",
spDataModelObject.Get()))
)
{
// The model object spDataModelObject is now registered and can be looked up
// under the name "Debugger.Models.Process.PrivateProcessExtension".
// This means others can extend it by fetching that name.
//
// Fetch it back as example:
ComPtr<IModelObject> spFetchedModel;
if (SUCCEEDED(spManager->AcquireNamedModel(
L"Debugger.Models.Process.PrivateProcessExtension",
&spFetchedModel))
)
{
// spFetchedModel should be the same as spDataModelObject
}
}
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | dbgmodel.h |