Метод IDataModelManager2::RegisterNamedModel (dbgmodel.h)

Метод RegisterNamedModel регистрирует заданную модель данных под известным именем, чтобы ее могли найти клиенты, желающие расширить ее. Это основная цель API — опубликовать модель данных в виде модели, которую можно расширить, извлекая модель, зарегистрированную под этим известным именем, и добавляя в нее родительскую модель. Хотя строка, передаваемая в аргументе modelName, может быть любой (это просто имя), существует соглашение, что она выглядит как пространство имен с разделителями точками в следующей форме:

• 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.

Примером такого имени является Debugger.Models.Process. Это имя, под которым регистрируется представление отладчика о процессе. Клиент, который расширяет процесс и сам является расширяемым, может зарегистрировать свою точку расширяемости как Debugger.Models.Process.NamedExtensionPoint, где NamedExtensionPoint ссылается на семантику, добавляемую в процесс.

Обратите внимание, что если данная модель данных зарегистрирована под именем, реализация IDataModelConcept для этой модели данных должна иметь метод GetName, который возвращает имя, зарегистрированное с помощью вызова этого метода RegisterNamedModel.

Синтаксис

HRESULT RegisterNamedModel(
  PCWSTR       modelName,
  IModelObject *modeObject
);

Параметры

modelName

Здесь возвращается корневое пространство имен модели данных.

modeObject

Регистремая модель данных.

Возвращаемое значение

Этот метод возвращает HRESULT, указывающее на успех или сбой.

Комментарии

Образец кода

ComPtr<IDataModelManager2> 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
    }
}

Интерфейс IDataModelManager2

Требования

Требование Значение
Заголовок dbgmodel.h