(comsvcs.h) IObjectContext::CreateInstance 方法
使用目前物件的內容建立物件。
語法
HRESULT CreateInstance(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID *ppv
);
參數
[in] rclsid
要具現化之物件類型的CLSID。
[in] riid
您想要具現化物件所實作的任何介面。
[out] ppv
新物件上所要求介面的參考。 如果具現化失敗,此參數會設定為 NULL。
傳回值
這個方法可以傳回下列值。
傳回碼 | 描述 |
---|---|
|
已成功完成命令。 |
|
clsid 指定的元件未註冊為 COM 元件。 |
|
記憶體不足,無法具現化物件。 |
|
在 ppvObj 參數中傳遞的自變數無效。 |
|
發生意外錯誤。 如果某個物件將其 IObjectContext 指標傳遞至另一個物件,而另一個物件會使用此指標呼叫 CreateInstance ,就會發生這種情況。 IObjectContext 指標在最初取得它的物件內容之外無效。 |
備註
CreateInstance 會建立 COM 物件。 不過,只有當物件元件向 COM+ 註冊時,物件才會有內容。
當您使用 CreateInstance 建立物件時,新對象的內容衍生自目前物件的 IObjectContext 和新物件元件的宣告式屬性。 新物件一律會在與建立它的物件相同的活動中執行。 如果目前物件有交易,新物件的元件交易屬性會判斷新物件是否在該交易的範圍內執行。
如果元件的異動屬性設定需要交易或支援交易,新物件就會繼承其建立者的異動。 如果元件的交易屬性需要新的交易,COM+ 會起始新物件的新交易。 如果元件的異動屬性不支援交易,則新物件不會在任何交易下執行。
CreateInstance 一律會傳回新具現化物件上的 IUnknown 介面。 您應該立即將傳回的值轉換為要與新物件通訊的介面。 您傳入 riid 參數的介面識別碼不需要與您轉換傳回值的介面相同,但它必須是您所具現化物件所實作的介面。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | comsvcs.h |