IDataModelManager2::RegisterNamedModel-Methode (dbgmodel.h)

Die RegisterNamedModel-Methode registriert ein bestimmtes Datenmodell unter einem bekannten Namen, sodass sie von Clients gefunden werden kann, die sie erweitern möchten. Dies ist der primäre Zweck der API - um ein Datenmodell als etwas zu veröffentlichen, das erweitert werden kann, indem das unter diesem bekannten Namen registrierte Modell abgerufen und ein übergeordnetes Modell hinzugefügt wird. Während die in das ModelName-Argument übergebene Zeichenfolge alles sein kann (es ist nur ein Name), gibt es eine Konvention, die wie ein punkttrennter Namespace des folgenden Formulars aussieht:

• 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.

Ein Beispiel für einen solchen Namen ist Debugger.Models.Process. Dies ist der Name, unter dem die Vorstellung eines Prozesses des Debuggers registriert ist. Ein Client, der den Prozess erweitert und selbst erweitert, kann seine Erweiterbarkeitspunkt als Debugger.Models.Process.NamedExtensionPoint registrieren, bei dem NamedExtensionPoint auf die Semantik verweist, die zum Prozess hinzugefügt wird.

Beachten Sie, dass die Implementierung von IDataModelConcept für dieses Datenmodell über eine GetName-Methode verfügen muss, wenn ein bestimmtes Datenmodell unter einem Namen registriert ist.

Syntax

HRESULT RegisterNamedModel(
  PCWSTR       modelName,
  IModelObject *modeObject
);

Parameter

modelName

Der Stammnamespace des Datenmodells wird hier zurückgegeben.

modeObject

Das Datenmodell, das registriert wird.

Rückgabewert

Diese Methode gibt HRESULT zurück, die Erfolg oder Fehler angibt.

Bemerkungen

Beispielcode

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

IDataModelManager2-Schnittstelle

Anforderungen

   
Header dbgmodel.h