Bagikan melalui


Verifikasi Filter Sistem File

Validasi Penggunaan

Filter Verifier memvalidasi penggunaan berikut dalam driver minifilter:

  • Penggunaan parameter dan konteks panggilan yang benar
  • Nilai pengembalian yang benar dari rutinitas panggilan balik praoperasi dan pascaoperasi
  • Perubahan yang konsisten dan koheren pada parameter dalam data panggilan balik

Pelacakan Objek Manajer Filter

Pemverifikasi Filter melacak objek manajer filter berikut:

  • Konteks Filter (konteks aliran, konteks file, dll.)
  • Struktur Data Panggilan Balik
  • Item Kerja Antrean
  • Struktur NameInformation
  • Objek File
  • Filter Objek
  • Objek Instans
  • Objek Volume

Untuk struktur yang dihitung referensi, seperti konteks filter dan struktur informasi nama, Pemverifikasi Filter akan masuk ke debugger setelah membongkar driver filter jika ada jumlah referensi yang tampak bocor. Ini akan mencetak instruksi tentang bagaimana Anda dapat menggunakan ekstensi debugger !fltkd untuk menemukan struktur yang bocor.

Filter Pelanggaran Pemverifikasi

Saat Pemverifikasi Filter mendeteksi pelanggaran, Pemverifikasi Filter mencetak pesan di debugger yang menjelaskan pelanggaran. Untuk sebagian besar pelanggaran, ia juga menghentikan eksekusi dan meminta pengguna untuk mengambil beberapa tindakan. Contohnya:

FILTER VERIFIER ERROR: A filter returned an unknown pre-operation callback status.
(Filter = FFFFAC04A21CD8A0 (MyFilter), Status = 0xbaadf00d)
Break, ignore, zap or remove ?

Untuk melanjutkan, ketik salah satu dari empat perintah satu huruf:

  • B atau b untuk Break: Ini memecah ke debugger tempat Anda dapat melakukan penyelidikan lebih lanjut.
  • I atau i untuk Abaikan: Melanjutkan eksekusi. Jika pelanggaran ini ditemui lagi, Pemverifikasi Filter akan mencetak pesan pelanggaran ke debugger, menghentikan eksekusi, dan menampilkan perintah.
  • Z atau z untuk Zap: Melanjutkan eksekusi. Jika pelanggaran ini ditemui lagi, Pemverifikasi Filter akan mencetak pesan pelanggaran ke debugger, tetapi TIDAK akan menghentikan eksekusi.
  • R atau r untuk Hapus: Melanjutkan eksekusi. Jika pelanggaran ini ditemui lagi, Pemverifikasi Filter TIDAK akan mencetak pesan pelanggaran dan TIDAK akan menghentikan eksekusi.

Catatan

Saat menggunakan Filter Verifier pada driver yang telah dibangun dengan pengoptimalan pengkompilasi diaktifkan, Terkadang Anda mungkin mengalami kesalahan Filter Verifier yang secara konsisten mengklaim bahwa filter Anda bocor merujuk ke satu atau beberapa sumber daya bahkan ketika Anda tidak dapat menemukan penyebab kebocoran dalam kode Anda. Pesan akan dimulai dengan teks yang mirip dengan yang berikut ini:

FILTER VERIFIER ERROR: A filter (Filter = FFFFAC04A21CD8A0 (MyFilter)) leaked references to the following resources:

Anda mungkin juga melihat pesan yang menunjukkan bahwa pelacakan objek tidak sinkron, seperti:

FILTER VERIFIER WARNING: Filter manager verifier object tracking may be out of sync for the system

Penyebab paling umum dari kondisi ini adalah bahwa Filter Verifier tidak dapat mengidentifikasi pemanggil sebenarnya dari API Manajer Filter karena pengoptimalan panggilan ekor. Ini dapat terjadi ketika rutinitas di driver Anda memanggil FILTER Manager API sebagai baris terakhirnya. Contohnya:

void MyWorkItemCallback(PFLT_GENERIC_WORKITEM WorkItem,
                        PVOID Filter,
                        PVOID Context)
{
   // Do some stuff
   ...
   FltFreeGenericWorkItem(WorkItem);
}

Ada beberapa cara untuk memverifikasi bahwa hal ini telah terjadi:

  1. Nonaktifkan pengoptimalan rutin tersangka dengan membungkusnya di #pragma optimize("", off) ... #pragma optimize("", on).
  2. Urutkan ulang kode Anda sehingga panggilan API Filter Manager bukan hal terakhir yang terjadi dalam rutinitas Anda.

Jika kesalahan tidak lagi bereproduksi setelah mencoba salah satu opsi tersebut, kemungkinan itu adalah positif palsu.

Mengaktifkan opsi ini

Anda dapat mengaktifkan fitur Verifikasi Filter Sistem File untuk satu atau beberapa driver dengan menggunakan verifier.exe baris perintah. Untuk detailnya, lihat Memilih Opsi Pemverifikasi Driver.

Catatan

Sebelum Windows build 25126 tidak didukung untuk mengaktifkan Verifikasi Filter Sistem File pada satu atau minifilter pada saat yang sama ntoskrnl dipilih untuk verifikasi. Melakukannya dapat mengakibatkan kesalahan Pemverifikasi yang memacu.

Untuk menghindari masalah ini, jangan sertakan ntoskrnl dalam daftar komponen untuk memverifikasi atau meningkatkan ke versi Windows setelah build 25126.

Cara yang disarankan untuk memulai Pemverifikasi Filter adalah dengan opsi /standar dari verifier.exe, karena menyediakan fitur berguna tambahan seperti kumpulan khusus dan pelacakan kumpulan:

verifier.exe /standard /driver MyFilter.sys

Verifikasi dimulai ketika driver minifilter mendaftar dengan manajer filter.

  • Mengaktifkan Hanya Pemverifikasi Filter di Windows 11 dan Versi Windows yang Lebih Baru Untuk mengaktifkan serangkaian pemeriksaan Filter Verifier minimal, aktifkan opsi Verifikasi I/O dan Verifikasi Filter Sistem File di Pemverifikasi Driver (verifier.exe). Contohnya:

    verifier.exe /ruleclasses 5 37 /driver MyFilter.sys
    
  • Mengaktifkan Hanya Pemverifikasi Filter di Windows 10 dan Versi Windows Sebelumnya Untuk mengaktifkan serangkaian pemeriksaan Filter Verifier minimal, tentukan nama driver minifilter dan aktifkan opsi Verifikasi I/O di Pemverifikasi Driver (verifier.exe). Contohnya:

    verifier.exe /flags 0x10 /driver MyFilter.sys