Cara Menggunakan Transactional NTFS

Handel File yang Ditransaksikan

Transactional NTFS (TxF) mengikat handel file ke transaksi. Untuk operasi yang bekerja pada handel (misalnya, fungsi ReadFile dan WriteFile ), panggilan fungsi API aktual tidak berubah. Untuk operasi file yang mengambil nama, ada fungsi yang ditransaksikan secara eksplisit untuk operasi ini. Misalnya, alih-alih memanggil CreateFile, panggil CreateFileTransacted. Ini membuat handel file yang ditransaksikan, yang kemudian dapat digunakan untuk semua operasi file yang memerlukan handel. Semua operasi berikutnya yang menggunakan handel ini adalah operasi yang ditransaksikan.

Penggunaan TxF Dasar

Serangkaian langkah berikut mewakili penggunaan paling mendasar untuk TxF. Skenario yang lebih kompleks juga didukung, atas kebijakan perancang aplikasi.

  1. Buat transaksi dengan memanggil fungsi KTM CreateTransaction atau dengan menggunakan antarmuka IKernelTransaction dari Koordinator Transaksi Terdistribusi (DTC).
  2. Dapatkan handel file yang ditransaksikan dengan memanggil CreateFileTransacted.
  3. Ubah file seperlunya menggunakan handel file yang ditransaksikan.
  4. Tutup semua handel file yang ditransaksikan yang terkait dengan transaksi yang dibuat di langkah 1.
  5. Terapkan atau batalkan transaksi dengan memanggil fungsi KTM atau DTC yang sesuai.

Poin Utama Model Pemrograman TxF

Model pemrograman TxF memiliki poin-poin penting berikut untuk Anda pertimbangkan ketika Anda mengembangkan aplikasi TxF:

  • Sangat disarankan agar aplikasi menutup semua handel file yang ditransaksikan sebelum melakukan atau menggulung balik transaksi. Sistem membatalkan semua handel yang ditransaksikan ketika transaksi berakhir. Setiap operasi, kecuali tutup, dilakukan pada handel yang ditransaksikan setelah transaksi berakhir mengembalikan kesalahan berikut: ERROR_HANDLE_NO_LONGER_VALID.
  • File dilihat sebagai unit penyimpanan. Pembaruan parsial dan penimpaan file lengkap didukung. Beberapa transaksi tidak dapat secara bersamaan mengubah file yang sama.
  • I/O yang dipetakan memori transparan dan konsisten dengan I/O file reguler. Aplikasi harus membersihkan dan menutup bagian yang dibuka sebelum melakukan transaksi. Kegagalan untuk melakukan ini dapat mengakibatkan perubahan parsial pada file yang dipetakan dalam transaksi. Pembatalan gagal jika ini tidak dilakukan.

Kesalahan Pemrograman Umum

Kesalahan umum berikut dapat terjadi saat mengembangkan aplikasi yang ditransaksikan:

  • Menggunakan handel file setelah transaksi selesai.
  • Gagal menutup handel ke file dan direktori yang dihapus sebelum melakukan transaksi, yang akan mencegah terjadinya operasi penghapusan. Kejadian ini harus terjadi sebelum melakukan penerapan agar operasi penghapusan dianggap sebagai bagian dari transaksi. Ini karena sistem tidak benar-benar menghapus file sampai handel terakhir ditutup, bahkan ketika operasi tidak ditransaksikan, sebagai bagian dari subsistem I/O file Windows.
  • Gagal memperhitungkan pembatalan transaksi yang dimulai sistem, yang dapat terjadi kapan saja; misalnya, transaksi digulung balik jika sumber daya sistem habis.