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

O método RegisterNamedModel registra um determinado modelo de dados em um nome conhecido para que ele possa ser encontrado por clientes que desejam estendê-lo. Essa é a principal finalidade da API – publicar um modelo de dados como algo que pode ser estendido recuperando o modelo registrado com esse nome conhecido e adicionando um modelo pai a ele. Embora a cadeia de caracteres passada no argumento modelName possa ser qualquer coisa (é apenas um nome), há uma convenção de que ela se parece com um namespace separado por ponto da seguinte forma:

• Debugger.Models.* - Data models which pertain to the debug target.  

• DataModel.Models.* - Data models which pertain to the core data model itself. 

  o DataModel.Models.Concepts.* - Data models which pertain to concepts in the data model.

Um exemplo desse nome é Debugger.Models.Process. Esse é o nome sob o qual a noção do depurador de um processo é registrada. Um cliente que estende o processo e é extensível pode registrar seu ponto de extensibilidade como Debugger.Models.Process.NamedExtensionPoint em que NamedExtensionPoint se refere à semântica que está sendo adicionada ao processo.

Observe que, se um determinado modelo de dados for registrado em um nome, a implementação de IDataModelConcept para esse modelo de dados deverá ter um método GetName que retorna o nome registrado por meio da chamada desse método RegisterNamedModel.

Sintaxe

HRESULT RegisterNamedModel(
  PCWSTR       modelName,
  IModelObject *modeObject
);

Parâmetros

modelName

O namespace raiz do modelo de dados é retornado aqui.

modeObject

O modelo de dados que está sendo registrado.

Retornar valor

Esse método retorna HRESULT que indica êxito ou falha.

Comentários

Código de exemplo

ComPtr<IDataModelManager> spManager;    /* get the data model manager */
ComPtr<IModelObject> spDataModelObject; /* get your data model object (see
                                           CreateDataModelObject) */

// If the model is registered under a name (e.g.: 
// Debugger.Models.Process.PrivateProcessExtension as below), the
// IDataModelConcept::GetName method must return one of the registration 
// names (the one the extension considers "canonical").  It is legal for an 
// object to be registered under multiple names.
if (SUCCEEDED(spManager->RegisterNamedModel(
    L"Debugger.Models.Process.PrivateProcessExtension", 
    spDataModelObject.Get()))
    )
{
    // The model object spDataModelObject is now registered and can be looked up 
    // under the name "Debugger.Models.Process.PrivateProcessExtension".
    // This means others can extend it by fetching that name.
    //
    // Fetch it back as example:
    ComPtr<IModelObject> spFetchedModel;
    if (SUCCEEDED(spManager->AcquireNamedModel(
        L"Debugger.Models.Process.PrivateProcessExtension", 
        &spFetchedModel))
        )
    {
        // spFetchedModel should be the same as spDataModelObject
    }
}

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h

Confira também

Interface IDataModelManager