IStream::Seek 方法 (objidl.h)

Seek 方法會將搜尋指標變更為新的位置。 新位置相對於數據流的開頭、數據流結尾或目前的搜尋指標。

語法

HRESULT Seek(
  [in]  LARGE_INTEGER  dlibMove,
  [in]  DWORD          dwOrigin,
  [out] ULARGE_INTEGER *plibNewPosition
);

參數

[in] dlibMove

要加入至 dwOrigin 參數所指示位置的位移。 如果 dwOrigin是STREAM_SEEK_SET,這會解譯為不帶正負號的值,而不是帶正負號的值。

[in] dwOrigin

dlibMove 中所指定位移的原點。 原點可以是檔案開頭 (STREAM_SEEK_SET) 、目前的搜尋指標 (STREAM_SEEK_CUR) ,或是檔案結尾 (STREAM_SEEK_END) 。 如需值的詳細資訊,請參閱 STREAM_SEEK 列舉。

[out] plibNewPosition

這個方法從數據流開頭寫入新搜尋指標值的指標位置指標。

您可以將此指標設定為 NULL。 在此情況下,這個方法不會提供新的搜尋指標。

傳回值

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

傳回碼 描述
S_OK 搜尋指標已成功調整。
E_PENDING 僅限異步記憶體:目前無法使用部分或所有數據流數據。
STG_E_INVALIDPOINTER 表示 plibNewPosition 指向無效的記憶體,因為不會讀取 plibNewPosition
STG_E_INVALIDFUNCTION dwOrigin 參數包含無效的值,或 dlibMove 參數包含不正確的位移值。 例如,搜尋指標的結果是負位移值。
STG_E_REVERTED 物件已因交易樹狀結構中上方的還原作業而失效。

備註

IStream::Seek 會變更搜尋指標,讓後續的讀取和寫入作業可以在數據流物件中的不同位置執行。 在數據流開頭之前搜尋是錯誤的。 不過,不是要搜尋超過數據流結尾的錯誤。 搜尋超過數據流結尾對於後續寫入作業很有用,因為數據流位元組範圍將會在寫入完成之前立即延伸至新的搜尋位置。

您也可以使用這個方法來取得搜尋指標的目前值,方法是呼叫這個方法,並將 dwOrigin 參數設定為 STREAM_SEEK_CUR ,並將 dlibMove 參數設定為 0,讓搜尋指標不會變更。 plibNewPosition 參數中會傳回目前的搜尋指標。

規格需求

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

另請參閱

ISequentialStream::Read

ISequentialStream::Write

IStream - 複合檔案實作

STREAM_SEEK