Bagikan melalui


IPersistStorage::Simpan metode (objidl.h)

Menyimpan objek, dan objek berlapis apa pun yang dikandungnya, ke dalam objek penyimpanan yang ditentukan. Objek memasuki mode NoScribble.

Sintaks

HRESULT Save(
  [in] IStorage *pStgSave,
  [in] BOOL     fSameAsLoad
);

Parameter

[in] pStgSave

Penunjuk IStorage ke penyimpanan tempat objek akan disimpan.

[in] fSameAsLoad

Menunjukkan apakah penyimpanan yang ditentukan adalah yang saat ini, yang diteruskan ke objek oleh salah satu panggilan berikut: IPersistStorage::InitNew, IPersistStorage::Load, atau IPersistStorage::SaveCompleted.

Parameter ini diatur ke FALSE saat melakukan operasi Simpan Sebagai atau Simpan Salinan Ke atau saat melakukan penyimpanan penuh. Dalam kasus terakhir, metode ini menyimpan ke file sementara, menghapus file asli, dan mengganti nama file sementara.

Parameter ini diatur ke TRUE untuk melakukan penyimpanan penuh dalam situasi memori rendah atau untuk melakukan penyimpanan bertahap cepat di mana hanya komponen kotor yang disimpan.

Nilai kembali

Metode ini dapat mengembalikan nilai berikut.

Menampilkan kode Deskripsi
S_OK
Metode berhasil diselesaikan.
STG_E_MEDIUMFULL
Objek tidak disimpan karena kurangnya ruang pada disk.
E_FAIL
Objek tidak dapat disimpan karena kesalahan selain kurangnya ruang disk.

Keterangan

Metode ini menyimpan objek, dan objek berlapis apa pun yang dikandungnya, ke dalam penyimpanan yang ditentukan. Ini juga menempatkan objek ke dalam mode NoScribble. Dengan demikian, objek tidak dapat menulis ke penyimpanannya sampai panggilan berikutnya ke metode IPersistStorage::SaveCompleted mengembalikan objek ke mode Normal.

Jika objek penyimpanan sama dengan objek yang dimuat atau dibuat, operasi penyimpanan mungkin dapat menulis perubahan inkremental ke objek penyimpanan. Jika tidak, penyimpanan penuh harus dilakukan.

Metode ini secara rekursif memanggil metode IPersistStorage::Save , fungsi OleSave , atau metode IStorage::CopyTo untuk menyimpan objek berlapisnya.

Metode ini tidak memanggil metode IStorage::Commit . Juga tidak menulis CLSID ke objek penyimpanan. Kedua tugas ini adalah tanggung jawab pemanggil.

Catatan untuk Penelepon

Daripada memanggil IPersistStorage::Save secara langsung, Anda biasanya memanggil fungsi pembantu OleSave yang melakukan langkah-langkah berikut:
  1. Panggil fungsi WriteClassStg untuk menulis pengidentifikasi kelas untuk objek ke penyimpanan.
  2. Panggil metode IPersistStorage::Save .
  3. Jika diperlukan, panggil metode IStorage::Commit pada objek penyimpanan.
Kemudian, aplikasi kontainer melakukan operasi lain yang diperlukan untuk menyelesaikan penyimpanan dan memanggil metode SaveCompleted untuk setiap objek.

Jika objek yang disematkan meneruskan metode IPersistStorage::Save ke objek berlapisnya, objek harus menerima panggilan ke metode IPersistStorage::SaveCompleted sebelum memanggil metode ini untuk objek berlapisnya.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header objidl.h

Lihat juga

IPersistStorage

OleSave