IDataModelManager::AcquireNamedModel-Methode (dbgmodel.h)

Dadurch wird ein bekannter Modellname nachschlagen und das Datenmodell zurückgegeben, das mit diesem Namen registriert wurde. Wenn kein Modell mit dem angegebenen Namen registriert ist, wird ein Stub erstellt und an den Aufrufer zurückgegeben.

Alles, was dem Stub hinzugefügt wird, wird dem echten Objekt bei der Registrierung hinzugefügt.

Syntax

HRESULT AcquireNamedModel(
  PCWSTR       modelName,
  IModelObject **modelObject
);

Parameter

modelName

Der Name, nach dem ein registriertes Datenmodell gesucht werden soll.

modelObject

Das Datenmodell, das unter dem vom Argument modelName angegebenen Namen registriert wurde, wird hier zurückgegeben. Wenn kein solches Datenmodell registriert wird, wird ein Stubobjekt erstellt, vorübergehend unter dem namen registriert, der vom Argument modelName angegeben wird und hier zurückgegeben wird. In diesem Fall, wenn das reale Objekt über einen Aufruf der RegisterNamedModel-Methode registriert wird, werden die Änderungen, die am Stubobjekt vorgenommen wurden, tatsächlich in das reale Datenmodell verschoben.

Rückgabewert

Diese Methode gibt HRESULT zurück.

Hinweise

Ein Aufrufer, der ein Datenmodell erweitern möchte, das unter einem bestimmten Namen registriert ist, ruft die AcquireNamedModel-Methode auf, um das Objekt für das Datenmodell abzurufen, das erweitert werden soll. Diese Methode gibt jedes Datenmodell zurück, das über einen vorherigen Aufruf der RegisterNamedModel-Methode registriert wurde.

Da der Hauptzweck der AcquireNamedModel-Methode darin besteht, das Modell zu erweitern, weist diese Methode ein besonderes Verhalten auf, wenn noch kein Modell unter dem angegebenen Namen registriert wurde. Wenn noch kein Modell unter dem angegebenen Namen registriert wurde, wird ein Stubobjekt erstellt, vorübergehend unter dem angegebenen Namen registriert und an den Aufrufer zurückgegeben. Wenn das reale Datenmodell über einen Aufruf der RegisterNamedModel-Methode registriert wird, werden alle Änderungen, die am Stubobjekt vorgenommen wurden, tatsächlich am realen Modell vorgenommen. Dadurch werden viele Abhängigkeitsprobleme in der Ladereihenfolge von Komponenten entfernt, die sich gegenseitig erweitern.

Beispielcode

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

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDataModelManager-Schnittstelle