Cara Menggunakan Transactional NTFS
Penganan File Transaksi
Transactional NTFS (TxF) mengaitkan handle berkas dengan suatu transaksi. Untuk operasi yang bekerja pada handle (misalnya, fungsi ReadFile dan fungsi WriteFile ), panggilan fungsi API aktual tidak berubah. Untuk operasi file dengan nama, ada fungsi transaksional khusus untuk operasi tersebut. Misalnya, alih-alih memanggil CreateFile, panggil CreateFileTransacted. Ini membuat handle file transaksional, yang kemudian dapat digunakan untuk semua operasi file yang memerlukan handle. Semua operasi berikutnya yang menggunakan penanganan ini adalah operasi transaksi.
Penggunaan TxF Dasar
Serangkaian langkah berikut mewakili penggunaan paling dasar untuk TxF. Skenario yang lebih kompleks juga didukung, atas kebijakan perancang aplikasi.
- Buat transaksi dengan memanggil fungsi KTM createTransaction atau dengan menggunakan antarmuka IKernelTransaction dari Koordinator Transaksi Terdistribusi (DTC).
- Dapatkan handel file yang ditransaksikan dengan memanggil CreateFileTransacted.
- Ubah berkas seperlunya menggunakan handle berkas yang telah ditransaksikan.
- Tutup semua pegangan file yang telah ditransaksikan yang terkait dengan transaksi yang dibuat di langkah 1.
- 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 yang perlu Anda pertimbangkan saat Anda mengembangkan aplikasi TxF:
- Sangat dianjurkan agar aplikasi menutup semua handle file yang ditransaksikan sebelum memproses atau menggagalkan transaksi. Sistem membatalkan semua handel yang ditransaksikan ketika transaksi berakhir. Setiap operasi, selain menutup, yang dilakukan pada handle transaksional setelah transaksi berakhir mengembalikan kesalahan berikut ini: ERROR_HANDLE_NO_LONGER_VALID.
- File dilihat sebagai unit penyimpanan. Pembaruan parsial dan penimpaan file lengkap didukung. Beberapa transaksi tidak dapat mengubah file yang sama secara bersamaan.
- I/O yang dipetakan memori transparan dan konsisten dengan I/O file reguler. Aplikasi harus menghapus dan menutup bagian yang dibuka sebelum melakukan transaksi. Kegagalan untuk melakukan ini dapat mengakibatkan perubahan parsial pada file yang dipetakan dalam transaksi. Pengembalian gagal jika ini tidak dilakukan.
Kesalahan Pemrograman Umum
Kesalahan umum berikut dapat terjadi saat mengembangkan aplikasi yang ditransaksikan:
- Menggunakan handle file setelah transaksi diselesaikan.
- Gagal menutup sepenuhnya handel ke file dan direktori yang dihapus sebelum menyelesaikan 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 hingga pegangan terakhir untuk file tersebut ditutup, meskipun operasi tersebut tidak melibatkan transaksi, 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.