共用方式為


CoGetInstanceFromIStorage 函式 (objbase.h)

建立新的 物件,並透過 對 IPersistFile::Load 的內部呼叫,從記憶體物件初始化它。

語法

HRESULT CoGetInstanceFromIStorage(
  [in, optional] COSERVERINFO *pServerInfo,
  [in, optional] CLSID        *pClsid,
  [in, optional] IUnknown     *punkOuter,
  [in]           DWORD        dwClsCtx,
  [in]           IStorage     *pstg,
  [in]           DWORD        dwCount,
  [in, out]      MULTI_QI     *pResults
);

參數

[in, optional] pServerInfo

COSERVERINFO 結構的指標,指定要具現化對象的計算機,以及要使用的驗證設定。 這個參數可以是 NULL,在此情況下,物件會在目前電腦上具現化、在類別的 RemoteServerName 登錄值下指定的電腦,或是如果為 類別指定 ActivateAtStorage 值或沒有本機登錄資訊,則為 pstg 儲存物件所在的計算機。

[in, optional] pClsid

要建立之對象的類別標識碼指標。 此參數可以是 NULL,在此情況下, 會呼叫 IStorage::Stat 來尋找物件的類別。

[in, optional] punkOuter

當非 NULL 時,表示正在建立實例做為匯總的一部分, 而 punkOuter 則用來做為新實例控制 IUnknown 的指標。 不支援跨進程或跨計算機匯總。 當具現化進程外的物件時,如果 punkOuterNULL,則會傳回CLASS_E_NOAGGREGATION。

[in] dwClsCtx

CLSCTX 列舉的值。

[in] pstg

用來使用 IPersistFile::Load 初始化物件的記憶體物件的指標。 此參數不可為 NULL

[in] dwCount

pResults 中的結構數目。 此參數必須大於 0。

[in, out] pResults

MULTI_QI 結構的陣列。 每個結構都有三個成員:要求介面的標識子 (pIID) 、傳回介面指標的位置 (pItf) ,以及 呼叫 QueryInterface (hr) 的傳回值。

傳回值

此函式可以傳回標準傳回值E_INVALIDARG,以及下列值。

傳回碼 描述
S_OK
函式已成功擷取所有介面。
CO_S_NOTALLINTERFACES
已成功擷取 pResults 陣列中要求的所有介面,但至少有一個介面。 每個MULTI_QI結構的 hr 成員會指出是否傳回特定介面S_OK或E_NOINTERFACE。
E_NOINTERFACE
已成功擷取 pResults 陣列中所要求的介面。

備註

CoGetInstanceFromIStorage 會建立新的 物件,並使用 IPersistFile::Load 從記憶體物件初始化它。 此函式的結果類似於建立具有 CoCreateInstanceEx 呼叫的實例,後面接著初始化 IPersistFile::Load 的呼叫,並具有下列重要區別:

  • 在遠端電腦上具現化物件時,此函式需要較少的網路來回行程。
  • dwClsCtx 設定為 CLSCTX_REMOTE_SERVER 且 pServerInfoNULL 的情況下,如果類別已向 ActivateAtStorage 值註冊或沒有相關聯的登錄資訊,則此函式會在 pstg 所在的計算機上具現化物件,以提供最少的網路流量。

規格需求

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

另請參閱

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromFile