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 |