Метод IDataModelManager2::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<IDataModelManager2> 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.
}

Интерфейс IDataModelManager2

Требования

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