共用方式為


IStorage::OpenStream 方法 (objidl.h)

OpenStream 方法會在指定的存取模式中,在此儲存物件內開啟現有的數據流物件。

語法

HRESULT OpenStream(
  [in]  const OLECHAR *pwcsName,
  [in]  void          *reserved1,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved2,
  [out] IStream       **ppstm
);

參數

[in] pwcsName

寬字元 Null 終止 Unicode 字串的指標,其中包含要開啟的數據流名稱。 OLE 保留 000 到 01f 字元作為數據流/記憶體名稱的第一個字元。 這是複合檔案限制,而不是結構化儲存限制。

[in] reserved1

保留供日後使用;必須是 NULL

[in] grfMode

指定要指派給開啟數據流的存取模式。 如需可能值的詳細資訊和描述,請參閱 STGM 常數。 在複合檔案實作中呼叫此方法時,您選擇的其他模式必須至少指定STGM_SHARE_EXCLUSIVE。

[in] reserved2

保留以備將來之用;必須為零。

[out] ppstm

IStream 指標變數的指標,可接收新開啟之數據流物件的介面指標。 如果發生錯誤,*ppstm 必須設定為 NULL

傳回值

這個方法可以傳回其中一個值。

傳回碼 描述
S_OK 已成功開啟數據流。
E_PENDING 僅限異步記憶體:目前無法使用部分或所有數據流數據。
STG_E_ACCESSDENIED 沒有足夠的許可權可開啟數據流。
STG_E_FILENOTFOUND 具有指定名稱的數據流不存在。
STG_E_INSUFFICIENTMEMORY 因為記憶體不足,所以數據流未開啟。
STG_E_INVALIDFLAG 針對 grfMode 參數指定的值不是有效的 STGM 常數值。
STG_E_INVALIDFUNCTION 不支援 grfMode 參數中的指定旗標組合;例如,在沒有 STGM_SHARE_EXCLUSIVE 旗標的情況下呼叫此方法時。
STG_E_INVALIDNAME pwcsName 的值無效。
STG_E_INVALIDPOINTER 為數據流物件指定的指標無效。
STG_E_INVALIDPARAMETER 其中一個參數無效。
STG_E_REVERTED 記憶體物件已由交易樹狀結構中上方的還原作業失效。
STG_E_TOOMANYOPENFILES 數據流未開啟,因為有太多開啟的檔案。

備註

IStorage::OpenStream 會在 grfMode 中指定的存取模式中,在此儲存物件內開啟現有的數據流物件。 在 grfMode 中提供的許可權有一定限制。 例如,此記憶體對象的許可權會限制其數據流的許可權。 一般而言,數據流的存取限制必須比其父記憶體上的存取限制更嚴格。 複合檔數據流必須以STGM_SHARE_EXCLUSIVE開啟。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 objidl.h
程式庫 Uuid.lib
Dll Ole32.dll

另請參閱

IStorage - 複合檔案實作

IStorage::CreateStream

IStream