ISequentialStream::Write 方法 (objidl.h)

Write 方法會將指定的位元組數寫入資料流物件,從目前的搜尋指標開始。

語法

HRESULT Write(
  [in]  const void *pv,
  [in]  ULONG      cb,
  [out] ULONG      *pcbWritten
);

參數

[in] pv

緩衝區的指標,其中包含要寫入數據流的數據。 即使 cb 為零,也必須為此參數提供有效的指標。

[in] cb

要嘗試寫入數據流的數據位元組數目。 此值可以是零。

[out] pcbWritten

ULONG 變數的指標,此方法會將寫入數據流物件的實際位元元組數目寫入其中。 呼叫端可以將這個指標設定為 NULL,在此情況下,此方法不會提供寫入的實際位元組數目。

傳回值

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

傳回碼 描述
S_OK 數據已成功寫入數據流物件。
E_PENDING 僅限異步記憶體:目前無法使用要寫入的部分或所有數據。
STG_E_MEDIUMFULL 寫入作業失敗,因為儲存裝置上沒有剩餘的空間。
STG_E_ACCESSDENIED 呼叫端沒有寫入這個數據流物件的必要許可權。
STG_E_CANTSAVE 因為存取不正確或空間不足以外的原因,無法寫入數據。
STG_E_INVALIDPOINTER 其中一個指標值無效。 pv 參數必須包含有效的指標,即使 cb 為零也一樣。
STG_E_REVERTED 物件已因交易樹狀結構中上方的還原作業而失效。
STG_E_WRITEFAULT 寫入作業因磁碟錯誤而失敗。 當此方法嘗試使用 STGM_SIMPLE 旗標) ,以簡單 (模式開啟的數據流時,也會傳回這個值。

備註

ISequentialStream::Write 會將指定的數據寫入數據流物件。 搜尋指標會針對實際寫入的位元元組數目進行調整。 實際寫入的位元組數目會傳回 於 wwwWritten 參數中。 如果位元組計數為零位元組,寫入作業就不會有任何作用。

如果搜尋指標目前超過數據流結尾,且位元組計數為非零,這個方法會將數據流的大小增加至搜尋指標,並寫入從搜尋指標開始的指定位元組。 寫入數據流的填滿位元組不會初始化為任何特定值。 這與 MS-DOS FAT 檔案系統中的檔案結束行為相同。

在零位元組計數和超過數據流結尾的搜尋指標時,這個方法不會建立填滿位元組,以將數據流增加至搜尋指標。 在此情況下,您必須呼叫 IStream::SetSize 方法來增加數據流的大小,並寫入填滿位元組。

即使發生錯誤, 也可能會有一 個值。

在 COM 提供的實作中,數據流物件不是疏鬆的。 任何填滿位元組最終會在磁碟上配置,並指派給數據流。

規格需求

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

另請參閱

ISequentialStream::Read

IStorage::OpenStream

IStream

IStream - 複合檔案實作

STGMOVE