IStream::CopyTo 方法 (objidl.h)

CopyTo 方法會將數據流中目前搜尋指標的指定位元元組數複製到另一個數據流中的目前搜尋指標。

語法

HRESULT CopyTo(
  [in]  IStream        *pstm,
  [in]  ULARGE_INTEGER cb,
  [out] ULARGE_INTEGER *pcbRead,
  [out] ULARGE_INTEGER *pcbWritten
);

參數

[in] pstm

目的地資料流的指標。 pstm 所指向的數據流可以是新的數據流或來源數據流的複製品。

[in] cb

要從來源資料流複製的位元組數目。

[out] pcbRead

位置指標,此方法會在該位置寫入從來源讀取的實際位元組數目。 您可以將這個指標設定為 NULL。 在此情況下,這個方法不會提供讀取的實際位元組數目。

[out] pcbWritten

位置指標,此方法會在該位置寫入已寫入目的地的實際位元組數目。 您可以將這個指標設定為 NULL。 在此情況下,這個方法不會提供寫入的實際位元組數目。

傳回值

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

傳回碼 描述
S_OK 已成功複製數據流物件。
E_PENDING 僅限異步記憶體:目前無法使用要複製的部分或所有數據。
STG_E_INVALIDPOINTER 其中一個指標參數的值無效。
STG_E_MEDIUMFULL 數據流不會複製,因為儲存裝置上沒有剩餘的空間。
STG_E_REVERTED 物件已因交易樹狀結構中上方的還原作業而失效。

備註

CopyTo 方法會將指定的位元組從一個數據流複製到另一個數據流。 它也可以用來將數據流複製到本身。 每個數據流實例中的搜尋指標都會針對讀取或寫入的位元組數目進行調整。 這個方法相當於使用 ISequentialStream::Readcb 位元組讀入記憶體,然後使用 ISequentialStream::Write 立即將它們寫入目的地數據流,雖然 IStream::CopyTo 會更有效率。

目的地數據流可以是藉由呼叫 IStream::Clone 方法所建立的來源數據流複本。

如果 IStream::CopyTo 傳 回錯誤,則您無法假設搜尋指針對來源或目的地有效。 此外,即使傳回其值,也不會有意義 即使傳回 值也沒意義。

如果 IStream::CopyTo 成功傳回,則讀取和寫入的實際位元組數目相同。

若要從目前的搜尋指標複製來源的其餘部分,請指定 cb 參數的最大大型整數值。 如果搜尋指標是數據流的開頭,此作業會複製整個數據流。

規格需求

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

另請參閱

ISequentialStream::Read

ISequentialStream::Write

IStream - 複合檔案實作

IStream::Clone