共用方式為


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

另請參閱

IStorage - 複合檔案實作

IStorage::CreateStorage