IDataModelManager2::AcquireNamedModel-Methode (dbgmodel.h)

AcquireNamedModel sucht einen bekannten Modellnamen und gibt das datenmodell zurück, das von diesem Namen registriert ist. Beachten Sie, dass ein Stub erstellt und an den Anrufer zurückgegeben wird, wenn kein Modell vom angegebenen Namen registriert ist.

Alles, das dem Stub hinzugefügt wurde, wird dem echten Objekt hinzugefügt, wenn eine Registrierung vorgenommen wird.

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 an dem 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 alle Datenmodelle zurück, die über einen vorherigen Aufruf der RegisterNamedModel-Methode registriert wurden.

Als primärer Zweck 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 an das Stubobjekt vorgenommen wurden, wirksam an das reale Modell vorgenommen. Dadurch werden viele Abhängigkeitsprobleme von Komponenten entfernt, 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

   
Header dbgmodel.h

Weitere Informationen

IDataModelManager2-Schnittstelle