Bagikan melalui


IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES IOCTL (ntifs.h)

Kode kontrol IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES dikirim untuk memaksa pembersihan sistem file sebelum salinan bayangan volume terjadi. IOCTL ini dikeluarkan sebagai permintaan IRP_MJ_DEVICE_CONTROL yang hanya dikirim ke objek perangkat volume dari sistem file lokal dan ke driver filter sistem file yang mungkin telah melekat pada volume tersebut. IOCTL ini paling umum dikirim oleh Layanan Menyalin Bayangan Volume, tetapi juga dapat dikeluarkan oleh aplikasi atau proses mode pengguna lainnya. Dimungkinkan juga dalam keadaan khusus agar IOCTL ini dikirim oleh Driver Salinan Bayangan Volume (volsnap.sys) selama permintaan hibernasi atau sebelum crash dump. IOCTL ini dikirim ke driver filter sistem file, driver sistem file, dan driver perangkat lainnya (driver filter penyimpanan dan driver penyimpanan, misalnya) yang terletak di bawah sistem file.

Ketika sistem file seperti NTFS menerima IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES, sistem file harus membersihkan volume ke disk, memaksa struktur disk sistem file menjadi status yang konsisten dan terbaru. Sistem file harus mengunci sistem file dalam status baca-saja yang dapat dipasang, memblokir perubahan sistem file baru untuk mencegah halaman disk yang di-cache menjadi kotor. Setelah sistem file menempatkan sistem file dalam keadaan seperti itu, sistem harus meneruskan IRP dengan IOCTL IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES ke bawah tumpukan ke driver berikutnya sambil terus menjaga sistem file dalam keadaan yang dapat dipasang baca-saja sampai driver di bawah ini menyelesaikan IRP. Ketika IRP selesai atau dibatalkan, sistem file kemudian mengaktifkan kembali I/O pada volume dan mengembalikan.

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer input

IrpSp->Parameters.DeviceIoControl.IoControlCode diatur ke IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES.

Buffer output

Tidak ada

Blok status

Anggota Status diatur ke STATUS_SUCCESS pada keberhasilan atau nilai NTSTATUS yang sesuai seperti salah satu hal berikut ini:

STATUS_FILE_LOCK_CONFLICT

Konflik kunci file ditemui. Kesalahan ini dapat dikembalikan oleh manajer filter.

STATUS_VOLUME_DISMOUNTED

Volume dilepas.

Keterangan

Salinan bayangan volume adalah salinan point-in-time dari volume tersebut. Salinan bayangan terutama digunakan oleh aplikasi cadangan sehingga dapat mencadangkan file secara konsisten, meskipun file mungkin benar-benar berubah selama waktu untuk menyelesaikan operasi pencadangan. Salinan bayangan juga dapat digunakan untuk menyiapkan volume untuk hibernasi yang dihasilkan dari permintaan PNP dan untuk crash dump.

Windows XP dan versi yang lebih baru dari sistem operasi mencakup kerangka kerja untuk mengatur waktu untuk salinan bayangan, serta driver filter penyimpanan (bukan driver filter sistem file) yang menggunakan teknik copy-on-write untuk membuat salinan bayangan. Layanan Menyalin Bayangan Volume (VSS) mengatur salinan bayangan. Driver Salinan Bayangan Volume, volsnap.sys, adalah driver filter penyimpanan yang dimuat di atas tumpukan penyimpanan di bawah sistem file.

Salah satu IOCTL terkait rekam jepret penting yang memengaruhi sistem file adalah IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES. IOCTL ini sebenarnya ditujukan untuk interpretasi oleh sistem file, meskipun itu adalah IOCTL. Ini karena semua sistem file harus meneruskan IOCTL ke driver tingkat bawah yang menunggu untuk memproses IOCTL setelah sistem file.

IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES dikirim hanya ke objek perangkat volume dari sistem file lokal dan ke driver filter sistem file yang mungkin telah melekat pada volume tersebut. Objek perangkat penyimpanan yang ditautkan ke volume melalui anggota RealDevice dari struktur Blok Parameter Volume (VPB) akan selalu memiliki salah satu jenis perangkat berikut:

FILE_DEVICE_DISK

FILE_DEVICE_VIRTUAL_DISK

IOCTL ini tidak dikirim ke sistem file jarak jauh.

Ketika sistem file lokal menerima IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES, driver harus membuat gambar metadata sistem file yang konsisten. Driver seharusnya tidak memiliki halaman yang tidak konsisten satu sama lain. Driver harus membersihkan bagian mana pun dari metadata dan buffer cache yang dipetakan yang belum dihapus ke disk dan menahan penulisan sampai IOCTL selesai oleh driver tingkat bawah.

Untuk driver sistem file minifilter, manajer filter menerima IOCTL ini dan mengeluarkan panggilan balik ke driver minifilter jika driver telah mendaftar untuk menerima IRP ini. Ketika driver minifilter atau driver filter sistem file warisan menerima IOCTL ini, driver harus membersihkan bagian mana pun dari metadatanya yang belum dihapus ke disk. Jika driver filter menggunakan buffer cache yang dipetakan untuk menulis metadatanya, maka sistem file akan mengurus semua pembilasan. Driver filter hanya perlu memastikan bahwa ia tidak menulis ke salah satu buffer cache yang dipetakan saat sistem file mencoba untuk menghapus perubahan pada disk. Driver filter sistem file warisan perlu meneruskan IRP ke driver berikutnya di tumpukan.

Driver dapat memilih untuk membersihkan data sambil menahan IRP ini yang berisi IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES IOCTL sebelum meneruskannya ke driver tingkat bawah. Setiap data yang dihapus ke disk saat menahan IOCTL ini sebelum mengirim IRP ke driver tingkat bawah berikutnya akan menjadi data yang tersedia pada salinan bayangan yang dihasilkan.

Jika ini adalah volume baca-saja, maka biasanya tidak ada yang perlu dilakukan oleh sistem file atau driver filter sistem file saat menerima IOCTL ini kecuali mengirimkannya ke driver tingkat bawah berikutnya.

Persyaratan

Persyaratan Nilai
Header ntifs.h (termasuk Ntifs.h, Fltkernel.h)

Lihat juga

IRP_MJ_DEVICE_CONTROL