IStream 介面 (objidl.h)

IStream 介面可讓您讀取和寫入數據至數據流物件。 Stream 物件包含結構化儲存物件中的數據,其中記憶體會提供結構。 簡單數據可以直接寫入數據流,但最常是數據流是儲存物件內巢狀的元素。 它們類似於標準檔案。

IStream 介面會定義類似 MS-DOS FAT 檔案函式的方法。 例如,每個數據流物件都有自己的訪問許可權和搜尋指標。 DOS 檔案和數據流對象之間的主要差異在於,在後者的情況下,數據流是使用 IStream 介面指標開啟,而不是檔句柄。

此介面中的方法會將對象的數據呈現為您可以讀取或寫入的連續位元組序列。 此外,還有一種方法可用來認可和還原在交易模式中開啟之數據流的變更,以及限制存取數據流中某個字節範圍的方法。

串流可以長時間保持開啟狀態,而不需要耗用文件系統資源。 IUnknown::Release 方法類似於檔案上的 close 函式。 發行之後,數據流物件已不再有效且無法使用。

異步 Moniker 的用戶端可以選擇數據提取或數據推送模型,以驅動異步 IMoniker::BindToStorage 作業,以及接收異步通知。 如需詳細資訊 ,請參閱 URL Monikers 。 下表比較下列兩種下載模型中傳回的異步 ISequentialStream::ReadIStream::Seek 呼叫行為

IStream 方法呼叫 數據提取模型中的行為 數據推送模型中的行為
讀取 會呼叫 來讀取部分數據 (,而不是所有可用的數據) 傳回S_OK。 客戶端必須先繼續讀取所有可用的數據,再從 IBindStatusCallback::OnDataAvailable 傳回,否則系結作業會遭到封鎖。 (,讀取直到傳回S_FALSE或E_PENDING) 傳回S_OK。 即使客戶端此時從 IBindStatusCallback::OnDataAvailable 傳回,系結作業仍會繼續, 且 IBindStatusCallback::OnDataAvailable 會重複呼叫,直到系結完成為止。
呼叫 Read 以讀取所有可用的數據 如果系結作業尚未完成,則會傳回E_PENDING,當有更多數據可用時,會再次呼叫 IBindStatusCallback::OnDataAvailable 與數據提取模型相同。
讀取 會呼叫 來讀取所有可用的數據,而系結作業會超過檔案 (結尾) 傳回S_FALSE。 後續會呼叫 IBindStatusCallback::OnDataAvailable ,並將 grfBSC 旗標設定為 BSCF_LASTDATANOTIFICATION。 與數據提取模型相同。
搜尋 稱為 搜尋 無法在數據提取模型中運作 搜尋 無法在數據推送模型中運作。
 

如需本主題的一般資訊,請參閱 異步MonikersData-Pull-Model與數據推送模型 ,以取得更具體的資訊。 另請參閱 管理記憶體配置 ,以取得 COM 管理記憶體規則的詳細數據。

繼承

IStream 介面繼承自 ISequentialStream 介面。 IStream 也有下列類型的成員:

方法

IStream 介面具有這些方法。

 
IStream::Clone

Clone 方法會使用自己的搜尋指標建立新的數據流物件,以參考與原始數據流相同的位元組。
IStream::Commit

Commit 方法可確保對交易模式中開啟之數據流物件所做的任何變更,都反映在父記憶體中。
IStream::CopyTo

從資料流中目前的搜尋指標將指定的位元組數目複製到另一個資料流中目前的搜尋指標。
IStream::LockRegion

LockRegion 方法會限制存取數據流中指定的位元組範圍。
IStream::Revert

Revert 方法會捨棄自上次 IStream::Commit 呼叫之後對交易數據流所做的所有變更。 在直接模式中開啟的數據流,並使用 IStream::Revert 的 COM 複合檔案實作進行數據流時,這個方法沒有任何作用。
IStream::Seek

變更新位置的搜尋指標。 新位置相對於數據流的開頭、數據流結尾或目前的搜尋指標。
IStream::SetSize

變更資料流物件的大小。
IStream::Stat

Stat 方法會擷取此數據流的 STATSTG 結構。
IStream::UnlockRegion

UnlockRegion 方法會移除先前受 IStream::LockRegion 限制之位元組範圍的存取限制。

規格需求

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

另請參閱

ISequentialStream

IStream - 複合檔案實作