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 |