Método IDataModelManager4::AcquireNamedModel (dbgmodel.h)
AcquireNamedModel procura 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 procurar 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, registrado temporariamente 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, de fato, movidas para o modelo de dados real.
Valor de retorno
Esse método retorna HRESULT.
Observações
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 no nome fornecido ainda. Se nenhum modelo tiver sido registrado no nome fornecido ainda, um objeto stub será criado, registrado temporariamente 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, de fato, feitas no modelo real. Isso remove muitos problemas de dependência de ordem de carga de componentes que se estendem entre si.
de código de exemplo
ComPtr<IDataModelManager4> 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 |