IDataModelManager2::CreateIntrinsicObject 方法 (dbgmodel.h)

CreateIntrinsicObject 方法是将内部值装箱到 IModelObject 中的方法。 调用方将值置于 COM VARIANT 中并调用此方法。 数据模型管理器返回表示对象的 IModelObject 。 请注意,此方法还用于装箱基于 IUnknown 的基本类型:属性访问器、方法、上下文等...在这种情况下,objectKind 方法指示对象表示的基于 IUnknown 的构造的类型,传递的变体的 punkVal 字段是 IUnknown 派生类型。 类型必须静态可强制转换为相应的模型接口 (例如: IModelPropertyAccessorIModelMethodIDebugHostContext 等...正在 ) 。

此方法支持的 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 (,这些类型适用于一组由枚举 ModelObjectKind 指示的专用 IUnknown 派生类型。

语法

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

参数

objectKind

指示要装箱的对象的类型。 对于因变体类型而异的普通内部函数,请在此处传递 ObjectIntrinsic。 对于实际上是 IUnknown 派生接口的其他接口,对象类型是 ModelObjectKind 枚举中的值之一,VARIANT 中的接口必须匹配。

intrinsicData

包含要在 IModelObject 容器内装箱的值的 VARIANT。

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 接口

要求

要求
Header dbgmodel.h