Метод 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
}
}
Требования
Требование | Значение |
---|---|
Заголовок | dbgmodel.h |