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


Метод 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