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