IStorage::OpenStorage 方法 (objidl.h)
OpenStorage 方法會在指定的存取模式中開啟具有指定名稱的現有儲存物件。
語法
HRESULT OpenStorage(
[in] const OLECHAR *pwcsName,
[in] IStorage *pstgPriority,
[in] DWORD grfMode,
[in] SNB snbExclude,
[in] DWORD reserved,
[out] IStorage **ppstg
);
參數
[in] pwcsName
寬字元 Null 終止 Unicode 字串的指標,其中包含要開啟的儲存物件名稱。 OLE 保留 000 到 01f 字元作為數據流/記憶體名稱的第一個字元。 這是複合檔案限制,而不是結構化儲存限制。 如果 pstgPriority 不是 NULL,則會忽略它。
[in] pstgPriority
必須是 NULL。 非 NULL 值會傳回STG_E_INVALIDPARAMETER。
[in] grfMode
指定開啟儲存物件時要使用的存取模式。 如需可能值的描述,請參閱 STGM 常數。 您選擇的其他模式必須在呼叫此方法時至少指定STGM_SHARE_EXCLUSIVE。
[in] snbExclude
必須是 NULL。 非 NULL 值會傳回STG_E_INVALIDPARAMETER。
[in] reserved
保留以備將來之用;必須為零。
[out] ppstg
成功時,指向已開啟儲存物件之 IStorage 指標位置的指標。 如果發生錯誤,此參數會設定為 NULL 。
傳回值
這個方法可以傳回其中一個值。
傳回碼 | 描述 |
---|---|
S_OK | 已成功開啟記憶體物件。 |
E_PENDING | 僅限異步記憶體:目前無法使用部分或所有記憶體的數據。 |
STG_E_ACCESSDENIED | 沒有足夠的許可權可開啟記憶體物件。 |
STG_E_FILENOTFOUND | 具有指定名稱的記憶體物件不存在。 |
STG_E_INSUFFICIENTMEMORY | 記憶體物件因為記憶體不足而未開啟。 |
STG_E_INVALIDFLAG | 針對 grfMode 參數指定的值不是有效的 STGM 常數值。 |
STG_E_INVALIDFUNCTION | 不支援 grfMode 參數中的指定旗標組合。 |
STG_E_INVALIDNAME | 不是 pwcsName 的有效值。 |
STG_E_INVALIDPOINTER | 為儲存物件指定的指標無效。 |
STG_E_INVALIDPARAMETER | 其中一個參數無效。 |
STG_E_REVERTED | 記憶體物件已由交易樹狀結構中上方的還原作業失效。 |
STG_E_TOOMANYOPENFILES | 記憶體物件未建立,因為有太多開啟的檔案。 |
STG_S_CONVERTED | 具有指定名稱的現有數據流已取代為包含名為CONTENTS之單一數據流的新儲存物件。 在直接模式中,新的記憶體會立即寫入磁碟。 在交易模式中,新的記憶體會寫入記憶體中的暫存記憶體,並在認可磁碟時寫入磁碟。 |
備註
如果 pstgPriority 參數為 NULL,則會忽略它。 如果 pstgPriority 參數不是 NULL,則它是先前開啟記憶體物件元素的 IStorage 指標,通常是在優先順序模式中開啟的專案。 儲存物件應根據 grfMode 關閉並重新開啟。 當 IStorage::OpenStorage 方法傳回時, pstgPriority 已不再有效。 使用 ppstg 參數中提供的值。
儲存物件可以使用STGM_DELETEONRELEASE開啟,在此情況下,物件會在收到最終發行時終結。 這適用於建立暫存儲存物件。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | objidl.h |
程式庫 | Uuid.lib |
Dll | Ole32.dll |