FSCTL_DELETE_USN_JOURNAL IOCTL (winioctl.h)
Menghapus jurnal perubahan nomor urutan pembaruan (USN) pada volume, atau menunggu pemberitahuan penghapusan jurnal perubahan.
C++ |
---|
BOOL WINAPI DeviceIoControl( (HANDLE) hDevice, // handle to volume FSCTL_DELETE_USN_JOURNAL, // dwIoControlCode(LPVOID) lpInBuffer, // input buffer (DWORD) nInBufferSize, // size of input buffer NULL, // lpOutBuffer0, // nOutBufferSize(LPDWORD) lpBytesReturned, // number of bytes returned (LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure |
Komentar
Untuk implikasi I/O yang tumpang tindih pada operasi ini, lihat bagian Keterangan topik DeviceIoControl.
Anda dapat menggunakan FSCTL_DELETE_USN_JOURNAL untuk menghapus jurnal perubahan. Sistem file NTFS memulai operasi penghapusan dan segera kembali ke proses panggilan, kecuali bendera USN_DELETE_FLAG_NOTIFY diatur dalam DeleteFlags anggota DELETE_USN_JOURNAL_DATA.
Jika bendera USN_DELETE_FLAG_NOTIFY dan USN_DELETE_FLAG_DELETE diatur, panggilan ke FSCTL_DELETE_USN_JOURNAL memulai proses penghapusan. Kemudian panggilan memblokir utas panggilan dan menunggu penghapusan (pada panggilan sinkron atau tidak tumpang tindih), atau menyiapkan pemberitahuan peristiwa dengan menggunakan port penyelesaian I/O atau mekanisme lain, dan mengembalikan (pada panggilan asinkron atau tumpang tindih).
Anda juga dapat menggunakan FSCTL_DELETE_USN_JOURNAL untuk menerima pemberitahuan bahwa penghapusan jurnal perubahan selesai, dengan mengatur hanya USN_DELETE_FLAG_NOTIFY. Jika Anda melakukannya, operasi FSCTL_DELETE_USN_JOURNAL menunggu hingga penghapusan selesai sebelum kembali (pada panggilan sinkron atau tidak tumpang tindih), atau menyiapkan pemberitahuan peristiwa dengan menggunakan port penyelesaian I/O atau mekanisme lain (pada panggilan asinkron atau tumpang tindih).
Penghapusan di mana aplikasi menerima pemberitahuan mungkin telah dimulai oleh proses saat ini, atau beberapa proses lainnya. Misalnya, ketika aplikasi dimulai, aplikasi dapat menggunakan FSCTL_DELETE_USN_JOURNAL untuk menentukan apakah penghapusan yang dimulai oleh beberapa proses lain sedang berlangsung dan jika ya, keluar.
Penghapusan lengkap jurnal perubahan memerlukan pemindaian volume tempat jurnal perubahan berada, yang mungkin memakan waktu lama pada volume dengan banyak file. Operasi terus selesai bahkan di seluruh sistem dimulai ulang. Upaya untuk membuat, memodifikasi, menghapus, atau mengkueri jurnal perubahan saat penghapusan sedang berlangsung gagal dan mengembalikan kode kesalahan ERROR_JOURNAL_DELETE_IN_PROGRESS.
Operasi FSCTL_DELETE_USN_JOURNAL memiliki biaya performa yang signifikan, sehingga harus digunakan dengan hemat. Administrator harus menghapus jurnal ketika nilai USN saat ini mendekati nilai USN maksimum yang mungkin.
Untuk informasi selengkapnya, lihat Membuat, Memodifikasi, dan Menghapus Change Journal.
Untuk mengambil handel ke volume, panggil CreateFile dengan parameter lpFileName diatur ke string dalam formulir berikut:
\\.\X:
Dalam string sebelumnya, X adalah huruf yang mengidentifikasi drive tempat volume muncul. Volume harus NTFS.
Di Windows 8 dan Windows Server 2012, kode ini didukung oleh teknologi berikut.
Teknologi | Didukung |
---|---|
Protokol Server Message Block (SMB) 3.0 | Tidak |
Failover Transparan (TFO) SMB 3.0 | Tidak |
SMB 3.0 dengan Scale-out File Shares (SO) | Tidak |
Sistem File Volume Bersama Kluster (CsvFS) | Ya |
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
Header |
winioctl.h (termasuk Windows.h) |
Lihat juga
DeviceIoControl
Kode Kontrol Manajemen Volume