Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
AcquireNamedModel ищет хорошо известное имя модели и возвращает модель данных, зарегистрированную этим именем. Обратите внимание, что если у указанного имени нет модели, то заглушка будет создана и возвращена вызывающей объекту.
Все, что добавляется в заглушку, будет добавлено к реальному объекту во время регистрации.
Синтаксис
HRESULT AcquireNamedModel(
PCWSTR modelName,
IModelObject **modelObject
);
Параметры
modelName
Имя, для которого нужно найти зарегистрированную модель данных.
modelObject
Модель данных, зарегистрированная под именем аргумента modelName, будет возвращена здесь. Если такая модель данных не зарегистрирована, будет создан объект заглушки, временно зарегистрированный под именем, заданным аргументом modelName и возвращенный здесь. Если это произошло, когда реальный объект регистрируется с помощью вызова метода RegisterNamedModel, изменения, внесенные в объект заглушки, в действительности перемещаются в реальную модель данных.
Возвращаемое значение
Этот метод возвращает HRESULT.
Замечания
Вызывающий объект, который хочет расширить модель данных, зарегистрированную под заданным именем, вызывает метод AcquireNamedModel, чтобы получить объект для модели данных, которую они хотят расширить. Этот метод вернет любую модель данных, зарегистрированную перед вызовом метода RegisterNamedModel.
В качестве основной цели метода AcquireNamedModel является расширение модели, этот метод имеет особое поведение, если модель еще не зарегистрирована под заданным именем. Если модель еще не зарегистрирована под заданным именем, создается объект заглушки, временно зарегистрированный под заданным именем и возвращен вызывающий объект. При регистрации реальной модели данных с помощью вызова метода RegisterNamedModel все изменения, внесенные в объект заглушки, в действительности вносятся в реальную модель. Это удаляет множество проблем с зависимостью порядка нагрузки от компонентов, которые расширяют друг друга.
пример кода
ComPtr<IDataModelManager2> 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!
}
}
Требования
Требование | Ценность |
---|---|
заголовка | dbgmodel.h |