IDataModelManager3::AcquireNamedModel-Methode (dbgmodel.h)
AcquireNamedModel sucht nach einem bekannten Modellnamen und gibt das mit diesem Namen registrierte Datenmodell zurück. 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 realen Objekt hinzugefügt, wenn eine Registrierung erfolgt.
Syntax
HRESULT AcquireNamedModel(
PCWSTR modelName,
IModelObject **modelObject
);
Parameter
modelName
Der Name, für den ein registriertes Datenmodell nachschlagen soll.
modelObject
Das Datenmodell, das unter dem namen des ModelName-Arguments registriert wurde, wird hier zurückgegeben. Wenn kein solches Datenmodell registriert ist, wird ein Stubobjekt erstellt, vorübergehend unter dem Namen des ModelName-Arguments registriert und hier zurückgegeben. 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.
Bemerkungen
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 sie erweitern möchten. Diese Methode gibt das Datenmodell zurück, das über einen vorherigen Aufruf der RegisterNamedModel-Methode registriert wurde.
Als Hauptzweck der AcquireNamedModel-Methode besteht darin, das Modell zu erweitern, hat diese Methode ein spezielles 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, an das reale Modell vorgenommen. Dadurch werden viele Abhängigkeitsprobleme der Ladereihenfolge von Komponenten entfernt, die sich gegenseitig erweitern.
Beispielcode-
ComPtr<IDataModelManager3> 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 |