(dbgmodel.h) 的 IDataModelManager::CreateIntrinsicObject 方法

CreateIntrinsicObject 方法是將內建值方塊成 IModelObject 的方法。 呼叫端會將值放在 COM VARIANT 中,並呼叫這個方法。 數據模型管理員會傳回代表 物件的 IModelObject 。 請注意,這個方法也可用來 Box 基本 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,以及列舉 ModelObjectKind 所指示的特殊 IUnknown 衍生類型集VT_UNKNOWN (。

語法

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

參數

objectKind

表示正在 Boxed 的物件種類。 針對因變體類型而異的一般內部函數,會在這裡傳遞 ObjectIntrinsic。 對於實際上為 IUnknown 衍生介面的其他介面,對象類型是 ModelObjectKind 列舉中的其中一個值,而 VARIANT 中的 介面必須相符。

intrinsicData

VARIANT,其中包含即將在 IModelObject 容器內Boxed的值。

object

此處會傳回新boxed值 (為 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 介面