Compartilhar via


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

Isso pesquisa um nome de modelo conhecido e retorna o modelo de dados registrado por esse nome. Observe que, se não houver nenhum modelo registrado pelo nome fornecido, um stub será criado e retornado ao chamador.

Qualquer coisa adicionada ao stub será adicionada ao objeto real no momento em que um registro for feito.

Sintaxe

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

Parâmetros

modelName

O nome para o qual pesquisar um modelo de dados registrado.

modelObject

O modelo de dados que foi registrado sob o nome fornecido pelo argumento modelName será retornado aqui. Se nenhum modelo de dados desse tipo for registrado, um objeto stub será criado, temporariamente registrado sob o nome fornecido pelo argumento modelName e retornado aqui. Se isso ocorreu, quando o objeto real é registrado por meio de uma chamada para o método RegisterNamedModel, as alterações feitas no objeto stub são, na verdade, movidas para o modelo de dados real.

Retornar valor

Esse método retorna HRESULT.

Comentários

Um chamador que deseja estender um modelo de dados registrado em um determinado nome chama o método AcquireNamedModel para recuperar o objeto para o modelo de dados que deseja estender. Esse método retornará qualquer modelo de dados registrado por meio de uma chamada anterior ao método RegisterNamedModel.

Como a principal finalidade do método AcquireNamedModel é estender o modelo, esse método terá um comportamento especial se nenhum modelo tiver sido registrado sob o nome fornecido ainda. Se nenhum modelo tiver sido registrado no nome fornecido ainda, um objeto stub será criado, temporariamente registrado sob o nome fornecido e retornado ao chamador. Quando o modelo de dados real é registrado por meio de uma chamada para o método RegisterNamedModel, todas as alterações feitas no objeto stub são, na verdade, feitas no modelo real. Isso remove muitos problemas de dependência de ordem de carga de componentes que se estendem entre si.

Código de exemplo

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

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h

Confira também

Interface IDataModelManager