IPersistStorage::Save 方法 (objidl.h)
將物件及其包含的任何巢狀物件儲存到指定的儲存物件中。 對象進入 NoScribble 模式。
語法
HRESULT Save(
[in] IStorage *pStgSave,
[in] BOOL fSameAsLoad
);
參數
[in] pStgSave
要儲存物件的記憶體的 IStorage 指標。
[in] fSameAsLoad
指出指定的記憶體是否為目前記憶體,這是由下列其中一個呼叫傳遞至物件:IPersistStorage::InitNew、IPersistStorage::Load 或 IPersistStorage::SaveCompleted。
執行另存新檔或儲存複本作業時,或執行完整儲存時,此參數會設定為 FALSE。 在後者的情況下,此方法會儲存至臨時檔、刪除源檔,以及重新命名暫存盤。
此參數設定為 TRUE ,以在低記憶體情況下執行完整儲存,或執行僅儲存已變更元件的快速累加儲存。
傳回值
這個方法可以傳回下列值。
傳回碼 | 描述 |
---|---|
|
已成功完成命令。 |
|
因為磁碟上沒有空間,所以對象並未儲存。 |
|
因為磁碟空間不足以外的錯誤,所以無法儲存物件。 |
備註
這個方法會將物件及其包含的任何巢狀物件儲存到指定的記憶體中。 它也會將物件置於 NoScribble 模式中。 因此,對象無法寫入其記憶體,直到後續呼叫 IPersistStorage::SaveCompleted 方法將物件傳回 Normal 模式為止。
如果儲存物件與其載入或建立的物件相同,儲存作業可能會將累加變更寫入記憶體物件。 否則,必須完成完整儲存。
這個方法會以遞歸方式呼叫 IPersistStorage::Save 方法、 OleSave 函式或 IStorage::CopyTo 方法,以儲存其巢狀物件。
這個方法不會呼叫 IStorage::Commit 方法。 也不會將 CLSID 寫入記憶體物件。 這兩項工作都是呼叫者的責任。
來電者的附註
您通常呼叫執行下列步驟的 OleSave 協助程式函式,而不是直接呼叫 IPersistStorage::Save:- 呼叫 WriteClassStg 函式,將對象的類別識別碼寫入記憶體。
- 呼叫 IPersistStorage::Save 方法。
- 如有需要,請在記憶體物件上呼叫 IStorage::Commit 方法。
如果內嵌物件將 IPersistStorage::Save 方法傳遞至其巢狀物件,它必須先收到其 IPersistStorage::SaveCompleted 方法的呼叫,才能為其巢狀物件呼叫這個方法。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | objidl.h |