IDataModelManager2::AcquireNamedModel-Methode (dbgmodel.h)
AcquireNamedModel sucht einen bekannten Modellnamen und gibt das mit diesem Namen registrierte Datenmodell zurück. Beachten Sie, dass ein Stub erstellt und an den Aufrufer zurückgegeben wird, wenn kein Modell mit dem angegebenen Namen registriert ist.
Alles, was dem Stub hinzugefügt wird, wird dem realen Objekt zum Zeitpunkt 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 ist, wird ein Stubobjekt erstellt, vorübergehend unter dem vom modelName-Argument angegebenen Namen registriert und hier zurückgegeben. Wenn dies der Fall ist, werden die änderungen, die am Stubobjekt vorgenommen wurden, wenn das reale Objekt über einen Aufruf der RegisterNamedModel-Methode registriert wird, tatsächlich in das echte 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 er erweitern möchte. Diese Methode gibt das 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, hat diese Methode ein besonderes Verhalten, 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 der Ladereihenfolge von Komponenten beseitigt, die sich gegenseitig erweitern.
Beispielcode
ComPtr<IDataModelManager2> 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 |