Partager via


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
    }
}

Interface IDataModelManager2

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h