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 的指標。 不支援跨進程或跨計算機匯總。 當具現化進程外的物件時,如果 punkOuter 非 NULL,則會傳回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,以及下列值。
傳回碼 | 描述 |
---|---|
|
函式已成功擷取所有介面。 |
|
已成功擷取 pResults 陣列中要求的所有介面,但至少有一個介面。 每個MULTI_QI結構的 hr 成員會指出是否傳回特定介面S_OK或E_NOINTERFACE。 |
|
已成功擷取 pResults 陣列中所要求的介面。 |
備註
CoGetInstanceFromIStorage 會建立新的 物件,並使用 IPersistFile::Load 從記憶體物件初始化它。 此函式的結果類似於建立具有 CoCreateInstanceEx 呼叫的實例,後面接著初始化 IPersistFile::Load 的呼叫,並具有下列重要區別:
- 在遠端電腦上具現化物件時,此函式需要較少的網路來回行程。
- 在 dwClsCtx 設定為 CLSCTX_REMOTE_SERVER 且 pServerInfo 為 NULL 的情況下,如果類別已向 ActivateAtStorage 值註冊或沒有相關聯的登錄資訊,則此函式會在 pstg 所在的計算機上具現化物件,以提供最少的網路流量。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | objbase.h |
程式庫 | Ole32.lib |
Dll | Ole32.dll |