共用方式為


(comsvcs.h) IObjectContext::CreateInstance 方法

使用目前物件的內容建立物件。

語法

HRESULT CreateInstance(
  [in]  REFCLSID rclsid,
  [in]  REFIID   riid,
  [out] LPVOID   *ppv
);

參數

[in] rclsid

要具現化之物件類型的CLSID。

[in] riid

您想要具現化物件所實作的任何介面。

[out] ppv

新物件上所要求介面的參考。 如果具現化失敗,此參數會設定為 NULL

傳回值

這個方法可以傳回下列值。

傳回碼 描述
S_OK
已成功完成命令。
REGDB_E_CLASSNOTREG
clsid 指定的元件未註冊為 COM 元件。
E_OUTOFMEMORY
記憶體不足,無法具現化物件。
E_INVALIDARG
在 ppvObj 參數中傳遞的自變數無效。
E_UNEXPECTED
發生意外錯誤。 如果某個物件將其 IObjectContext 指標傳遞至另一個物件,而另一個物件會使用此指標呼叫 CreateInstance ,就會發生這種情況。 IObjectContext 指標在最初取得它的物件內容之外無效。

備註

CreateInstance 會建立 COM 物件。 不過,只有當物件元件向 COM+ 註冊時,物件才會有內容。

當您使用 CreateInstance 建立物件時,新對象的內容衍生自目前物件的 IObjectContext 和新物件元件的宣告式屬性。 新物件一律會在與建立它的物件相同的活動中執行。 如果目前物件有交易,新物件的元件交易屬性會判斷新物件是否在該交易的範圍內執行。

如果元件的異動屬性設定需要交易或支援交易,新物件就會繼承其建立者的異動。 如果元件的交易屬性需要新的交易,COM+ 會起始新物件的新交易。 如果元件的異動屬性不支援交易,則新物件不會在任何交易下執行。

CreateInstance 一律會傳回新具現化物件上的 IUnknown 介面。 您應該立即將傳回的值轉換為要與新物件通訊的介面。 您傳入 riid 參數的介面識別碼不需要與您轉換傳回值的介面相同,但它必須是您所具現化物件所實作的介面。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 comsvcs.h

另請參閱

IObjectContext