IPropertyStorage::Metode penerapan (propidl.h)
Metode IPropertyStorage::Commit menyimpan perubahan yang dilakukan pada objek penyimpanan properti ke objek penyimpanan induk.
Sintaks
HRESULT Commit(
[in] DWORD grfCommitFlags
);
Parameter
[in] grfCommitFlags
Bendera yang menentukan kondisi di mana penerapan akan dilakukan. Untuk informasi selengkapnya tentang bendera tertentu dan maknanya, lihat bagian Keterangan.
Nilai kembali
Metode ini mendukung nilai pengembalian standar E_UNEXPECTED, serta yang berikut ini:
Keterangan
Seperti IStorage::Commit, metode IPropertyStorage::Commit memastikan bahwa setiap perubahan yang dilakukan pada objek penyimpanan properti tercermin dalam penyimpanan induk.
Dalam mode langsung dalam implementasi file campuran, panggilan ke metode ini menyebabkan perubahan apa pun yang saat ini ada di buffer memori dibersihkan ke aliran properti yang mendasar. Dalam implementasi file campuran untuk set properti nonsimple, IStorage::Commit juga dipanggil pada objek substorage yang mendasar dengan parameter grfCommitFlags yang diteruskan.
Dalam mode bertransaksi, metode ini menyebabkan perubahan tercermin secara permanen dalam gambar persisten objek penyimpanan. Perubahan yang diterapkan harus dilakukan pada set properti ini sejak dibuka atau sejak penerapan terakhir pada pembukaan set properti ini. Metode penerapan menerbitkan perubahan yang dibuat pada satu tingkat objek ke tingkat berikutnya. Tentu saja, ini tetap tunduk pada transaksi tingkat luar apa pun yang mungkin ada pada objek tempat kumpulan properti ini berada. Izin tulis harus ditentukan ketika kumpulan properti dibuka (melalui IPropertySetStorage) pada pembukaan set properti agar operasi penerapan berhasil.
Jika operasi penerapan gagal karena alasan apa pun, status objek penyimpanan properti tetap seperti sebelum penerapan.
Panggilan ini tidak berpengaruh pada properti penyimpanan atau nilai aliran yang ada yang dibuka dari penyimpanan properti ini, tetapi menerapkannya.
Nilai yang valid untuk parameter grfCommitFlags tercantum dalam tabel berikut.
Nilai | Makna |
---|---|
STGC_DEFAULT | Penerapan sesuai semantik transaksi biasa. Penulis terakhir menang. Bendera ini mungkin tidak ditentukan dengan nilai bendera lainnya. |
STGC_ONLYIFCURRENT | Menerapkan perubahan hanya jika konten persisten saat ini dari kumpulan properti adalah konten yang menjadi dasar dari perubahan yang akan diterapkan. Artinya, tidak melakukan perubahan jika konten kumpulan properti telah diubah oleh penerapan dari pembukaan lain dari kumpulan properti. Kesalahan STG_E_NOTCURRENT dikembalikan jika penerapan tidak berhasil karena alasan ini. |
STGC_OVERWRITE | Hanya berguna saat melakukan transaksi yang tidak memiliki tingkat transaksi berlapis luar lebih lanjut, meskipun dapat diterima dalam semua kasus.
Catatan Menunjukkan bahwa penelepon bersedia mengambil risiko beberapa kerusakan data dengan mengorbankan penurunan penggunaan disk pada volume tujuan. Bendera ini berpotensi berguna dalam skenario ruang disk rendah, meskipun harus digunakan dengan hati-hati.
|
- .bmp
- .Dib
- .emf
- .gif
- .Ico
- .jfif
- .jpe
- .jpeg
- .jpg
- .png
- .Rle
- .Tiff
- .wmf
Solusinya adalah untuk
hilangkan panggilan ke IPropertyStorage::Commit. Memanggil IUnknown::Release pada handler properti file gambar XP tanpa memanggil IPropertyStorage::Commit terlebih dahulu secara implisit melakukan perubahan pada file. Perhatikan bahwa secara umum, memanggil IUnknown::Release tanpa terlebih dahulu memanggil IPropertyStorage::Commit akan membuang perubahan apa pun yang dibuat; solusi ini khusus untuk penangan properti file gambar pada Windows XP. Perhatikan juga bahwa pada versi Windows yang lebih baru, komponen ini berfungsi dengan baik (yaitu, memanggil IPropertyStorage::Commit terus berubah dan memanggil IUnknown::Release tanpa memanggil IPropertyStorage::Commit membuangnya).
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows 2000 Server [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | propidl.h (termasuk Objbase.h, Propidlbase.h) |
Pustaka | Uuid.lib |
DLL | Ole32.dll |