IPersistStream::Save 方法 (objidl.h)

儲存物件到指定資料流。

語法

HRESULT Save(
  [in] IStream *pStm,
  [in] BOOL    fClearDirty
);

參數

[in] pStm

資料流程的 IStream 指標,應該在其中儲存物件。

[in] fClearDirty

指出儲存完成之後,是否要清除變更旗標。 如果 為 TRUE,則應該清除旗標。 如果 為 FALSE,則旗標應該保持不變。

傳回值

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

傳回碼 描述
S_OK
已成功完成命令。
STG_E_CANTSAVE
物件無法將本身儲存至資料流程。 例如,此錯誤可能表示物件包含無法序列化至資料流程的另一個物件,或 ISequentialStream::Write 呼叫傳回STG_E_CANTSAVE。
STG_E_MEDIUMFULL
無法儲存物件,因為儲存裝置上沒有剩餘的空間。

備註

IPersistStream::Save 會將物件儲存至指定的資料流程,並指出物件是否應該重設其中途旗標。

搜尋指標位於資料流程中,物件應該開始寫入其資料的位置。 物件會呼叫 ISequentialStream::Write 方法來寫入其資料。

結束時,搜尋指標必須緊接在物件資料之後。 如果錯誤傳回,則搜尋指標的位置是未定義的。

來電者附注

您通常會呼叫執行下列動作的OleSaveToStream協助程式函式,而不是直接呼叫IPersistStream::Save
  1. 呼叫 GetClassID 以取得物件的 CLSID。
  2. 呼叫 WriteClassStm 函式,將物件的 CLSID 寫入資料流程。
  3. 呼叫 IPersistStream::Save
如果您直接呼叫這些方法,您可以在呼叫 IPersistStream::Save之前,將其他資料寫入 CLSID 之後的資料流程。

IPersistStream的 OLE 提供實作遵循這個相同的模式。

實作者的注意事項

IPersistStream::Save方法不會將 CLSID 寫入資料流程。 呼叫端負責撰寫 CLSID。

IPersistStream::Save方法可以從資料流程中讀取、寫入和搜尋;但是它不得在專案上的搜尋指標之前,搜尋資料流程中的位置。

URL Moniker 附注

將 URL Moniker 儲存至資料流程。 URL Moniker 的二進位格式是其在 Unicode 中的 URL 字串, (可能是完整或部分 URL 字串,如需詳細資料) ,請參閱 CreateURLMonikerEx 。 這會以 ULONG 字元計數來表示,後面接著許多 Unicode 字元。

需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IPersistStream