Поделиться через


Метод IDataModelManager::CreateIntrinsicObject (dbgmodel.h)

Метод CreateIntrinsicObject — это метод, который упаковывает встроенные значения в IModelObject. Вызывающий объект помещает значение в COM VARIANT и вызывает этот метод. Диспетчер модели данных возвращает объект IModelObject , представляющий объект . Обратите внимание, что этот метод также используется для настройки основных типов на основе IUnknown: методов доступа к свойствам, методов, контекстов и т. д. В таких случаях метод objectKind указывает, какой тип конструкции на основе IUnknown представляет объект, а поле punkVal переданного варианта является производным типом IUnknown. Тип должен быть статически приведение к соответствующему интерфейсу модели (например, IModelPropertyAccessor, IModelMethod, IDebugHostContext и т. д.) в процессе.

Этот метод поддерживает следующие типы VARIANT: VT_UI1, VT_I1, VT_UI2, VT_I2, VT_UI4, VT_I4, VT_UI8, VT_I8, VT_R4, VT_R8, VT_BOOL, VT_BSTR и VT_UNKNOWN (для специализированного набора производных типов IUnknown, как указано в перечислении ModelObjectKind.

Синтаксис

HRESULT CreateIntrinsicObject(
  ModelObjectKind objectKind,
  VARIANT         *intrinsicData,
  IModelObject    **object
);

Параметры

objectKind

Указывает тип упаковаемого объекта. Для обычных встроенных функций, отличающихся типом варианта, здесь передается ObjectIntrinsic. Для других, которые фактически являются производными интерфейсами IUnknown, тип объекта является одним из значений перечисления ModelObjectKind, и интерфейс в VARIANT должен совпадать.

intrinsicData

Variant, содержащий значение, которое будет упаковаться в контейнер IModelObject .

object

Сюда будет возвращено только что упаковаемое значение (как IModelObject).

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

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

Комментарии

Образец кода

ComPtr<IDataModelManager> spManager; /* get the data model manager */

VARIANT vtValue;
vtValue.vt = VT_I4;
vtValue.lVal = 42;

// If the object is an VT_UNKNOWN, the first argument to CreateIntrinsicObject
// indicates what KIND of IUnknown.  For example, ObjectPropertyAccessor would 
// indicate IModelPropertyAccessor.  ObjectMethod would indicate IModelMethod, etc...
ComPtr<IModelObject> spValue;
if (SUCCEEDED(spManager->CreateIntrinsicObject(ObjectIntrinsic, &vtValue, &spValue)))
{
    // spValue now contains the object (boxed) representation of the int value 42.
}

Требования

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

См. также раздел

Интерфейс IDataModelManager