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 |