Compartir a través de


Método IDataModelManager3::AcquireNamedModel (dbgmodel.h)

AcquireNamedModel busca un nombre de modelo conocido y devuelve el modelo de datos registrado por ese nombre. Tenga en cuenta que si no hay ningún modelo registrado por el nombre proporcionado, se creará un código auxiliar y se devolverá al autor de la llamada.

Todo lo que se agregue al código auxiliar se agregará al objeto real en el momento en que se realiza un registro.

Sintaxis

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

Parámetros

modelName

Nombre para el que se va a buscar un modelo de datos registrado.

modelObject

El modelo de datos que se registró bajo el nombre proporcionado por el argumento modelName se devolverá aquí. Si no se registra este modelo de datos, se creará un objeto de código auxiliar, se registrará temporalmente con el nombre proporcionado por el argumento modelName y se devolverá aquí. Si esto ocurre, cuando el objeto real se registra a través de una llamada al método RegisterNamedModel, los cambios realizados en el objeto de código auxiliar se mueven al modelo de datos real.

Valor devuelto

Este método devuelve HRESULT.

Observaciones

Un autor de llamada que desea extender un modelo de datos que está registrado con un nombre determinado llama al método AcquireNamedModel para recuperar el objeto del modelo de datos que desea extender. Este método devolverá el modelo de datos registrado a través de una llamada anterior al método RegisterNamedModel.

Como objetivo principal del método AcquireNamedModel es ampliar el modelo, este método tiene un comportamiento especial si aún no se ha registrado ningún modelo con el nombre especificado. Si aún no se ha registrado ningún modelo con el nombre especificado, se crea un objeto de código auxiliar, se registra temporalmente con el nombre especificado y se devuelve al autor de la llamada. Cuando el modelo de datos real se registra a través de una llamada al método RegisterNamedModel, los cambios realizados en el objeto de código auxiliar son, en efecto, realizados en el modelo real. Esto quita muchos problemas de dependencia de orden de carga de los componentes que se extienden entre sí.

de código de ejemplo

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

Requisitos

Requisito Valor
encabezado de dbgmodel.h

Consulte también

de interfaz IDataModelManager3 de