Kedalaman I/O Windows (bagian 6, terakhir) — driver filter dan minifilter: alasan Procmon dan pemindaian virus dapat menyela I/O

· · Windows, Win32, I/O, Minifilter, Kernel, Device driver, Keamanan, Investigasi bug

Ini bagian terakhir seri «Kedalaman I/O Windows».

Sejak menggambar kotak «filter sistem file (antivirus, enkripsi, Procmon, dll.)» di diagram device stack bagian 1, mereka yang menyelip di tengah berkali-kali muncul di seri ini. Alasan Procmon dapat merekam semua I/O (bagian 1). «Hanya di lingkungan itu akses file lambat» (bagian 2). Reparse point yang membuat OneDrive mulai mengunduh pada saat dibuka (bagian 5). Kali ini akhirnya kita menghadapi mekanisme menyelip itu sendiri — driver filter sistem file dan minifilter — dan menarik semua benang seri.

1. Intinya dulu

  • «Menyela I/O» adalah titik perluasan yang diakui OS. Filter sistem file dapat melihat, menulis ulang, menolak, dan memproses sebagai pengganti sistem file permintaan ke sistem file (bab 2).1
  • Standar saat ini adalah minifilter. Untuk menyelesaikan masalah cara legacy yang menyela langsung ke device stack (urutan tidak tentu, tidak dapat di-unload), generasi berganti ke cara mendaftarkan callback ke Filter Manager (FltMgr) yang menyertai Windows (bab 2).23
  • Gerakannya adalah callback pre/post. Dipanggil sebelum dan sesudah setiap operasi, dalam urutan pendaftaran = urutan altitude. Melewatkan, menyelesaikan, menolak, menulis ulang — «pilihan driver» yang kita lihat di bagian 1 dapat dipakai apa adanya (bab 3).2
  • Altitude (ketinggian) yang memutuskan urutan. Pita nomor dialokasikan ke grup menurut kegunaan (Activity Monitor 360000–389999, Anti-Virus 320000–329999, dll.), dan setiap instans yang dilampirkan ke volume mendapat nomor unik (bab 4).45
  • Penghuni PC Anda dapat dilihat dengan fltmc. Procmon (hanya saat berjalan), antivirus, cloud filter OneDrive — semuanya berbaris di sini (bab 5).
  • Pengaturan pengecualian antivirus adalah «melewati pemindaian produk itu sendiri», dan tidak memengaruhi minifilter lain. Pengecualian adalah trade-off yang melemahkan perlindungan, dan untuk volume pengembangan ada pilihan yang lebih aman: Dev Drive (pemindaian asinkron) (bab 6).67
  • Investigasi «hanya lingkungan itu yang lambat» dimulai dari kolom Duration Procmon dan perbandingan konfigurasi fltmc (bab 7).

Peta pengetahuan artikel ini

Standar filter sistem file saat ini adalah minifilter; berbeda dari filter legacy yang menumpuk objek perangkat langsung ke device stack, ia adalah cara mendaftarkan callback pre/post ke Filter Manager (FltMgr) yang menyertai Windows. Urutan pemanggilan diputuskan secara deterministik oleh altitude yang dialokasikan dan dikelola Microsoft, dan konfigurasi nyata dapat diamati dengan perintah fltmc. Antivirus, Procmon, dan sinkronisasi cloud OneDrive semuanya penghuni mekanisme yang sama; pengaturan pengecualian hanya melewati pemindaian produk yang bersangkutan dan disertai trade-off melemahkan perlindungan, sementara untuk volume pengembangan ada alternatif yang lebih aman bernama Dev Drive.

Peta pengetahuan driver filter dan minifilterDiagram yang menunjukkan hubungan driver filter sistem file, pergantian generasi dari filter legacy ke minifilter, Filter Manager (FltMgr), callback pre/post, altitude dan grup urutan muat, pengamatan dengan fltmc, minifilter antivirus beserta pengaturan pengecualian dan Dev Drive, serta mekanisme Procmon merekam semua I/O sebagai minifiltermengimplementasikanmengimplementasikanpenerus darimensyaratkandapat menyebabkanmencegahmensyaratkanmenggunakanmenggunakandikonfigurasi dengandikonfigurasi dengandiverifikasi denganmensyaratkansebaiknya didahuluidiverifikasi dengandiverifikasi denganmenggunakanmenggunakanmenggunakandikonfigurasi denganmengotomatiskanmenggunakandapat menyebabkanmengurangidapat menyebabkandikonfigurasi denganmengurangimengurangidisarankan untukmenggunakandiverifikasi denganmenggunakanmenggunakanmensyaratkanmenggunakanminifilterFilter Manager (FltMgr)filter legacydriver filter sistem filedevice stackketidakstabilan urutan muatcallback pre/postaltitudegrup urutan muatfltmcpermohonan altitudeProcess Monitor (procmon.exe)minifilter antivirusfilter file cloud (cldflt)Files On-Demand OneDriveFast I/Obiaya kinerja akibat pemindaianpengaturan pengecualian (pengecualian folder)penurunan tingkat perlindunganDev Driveframe FltMgrobjek driver

Pada diagram, garis utuh menunjukkan relasi yang selalu berlaku dan garis putus-putus menunjukkan relasi bersyarat (syaratnya ada pada penjelasan masing-masing relasi di halaman rincian). Daftar lengkap relasi (total 35, beserta bukti dan tingkat kepastian) serta definisi konsep utama dikumpulkan di halaman rincian peta pengetahuan (dalam bahasa Jepang). Data: JSON-LD / Turtle

2. Sejarah mereka yang menyelip — dari filter legacy ke FltMgr

Driver filter sistem file adalah driver yang dapat menyela permintaan yang menuju sistem file (atau volume di bawahnya). Merekam permintaan, memantau, mengubah isi, bahkan menolak atau memproses sebagai pengganti — fondasi perangkat lunak seperti antivirus, enkripsi, cadangan, dan hierarchical storage.1

Cara implementasi lama (filter legacy) adalah cara menumpuk objek perangkat sendiri langsung ke device stack yang kita lihat di bagian 1. Sebagai mekanisme, itu lurus, tetapi dalam praktik penuh masalah — urutan penumpukan bergantung pada urutan muat dan sulit dijamin, sekali ditumpuk tidak dapat keluar dengan aman (tidak dapat di-unload), menjadi sarang bug kecocokan antar filter.

Karena itu Windows memperkenalkan Filter Manager (FltMgr). FltMgr sendiri berdiri di stack sebagai filter yang menyertai OS, dan setiap fungsi filter mendaftarkan callback ke FltMgr sebagai minifilter.2

Cara minifilter (standar saat ini)Pendaftaran callbackPendaftaran callbackFilter Manager (FltMgr)menyertai OS. Yang berdiri di stack hanya iniMinifilter A (altitude tinggi)Minifilter B (altitude rendah)Sistem fileUrutan deterministik lewat altitudedapat dimuat kapan saja(filter yang mendukung juga dapat di-unload)Cara legacyFilter legacy AFilter legacy BSistem fileUrutan terserah urutan muatunload aman tidak mungkin

Gambar 1: Pergantian generasi. Bukan «menumpuk» ke stack, melainkan cara «mendaftar» ke FltMgr.

Keuntungan cara minifilter dicantumkan secara resmi — dapat dimuat kapan saja, urutan dapat dikendalikan, dan filter yang mengimplementasikan callback unload dapat di-unload saat berjalan (filter yang tidak mengimplementasikan atau menolak tidak dapat dilepas).3 Untuk hidup berdampingan dengan filter legacy, FltMgr dapat berdiri di beberapa tempat di stack sebagai beberapa «frame», dan minifilter dijamin kembali ke posisi yang sama (altitude yang sama) bahkan setelah unload lalu dimuat ulang.2 Antivirus, pemantauan, dan perangkat lunak sinkronisasi modern hampir semuanya minifilter ini.

3. Gerakan minifilter — callback pre/post

Minifilter menyatakan «operasi mana yang menarik» kepada FltMgr. Misalnya, hanya tertarik pada IRP_MJ_CREATE (membuka) dan IRP_MJ_WRITE (menulis). Maka, setiap kali operasi itu mengalir, sebelum operasi (callback pre) dan sesudah operasi (callback post) dipanggil.

NTFSMinifilter B(altitude rendah)Minifilter A(altitude tinggi)FltMgrI/O ManagerNTFSMinifilter B(altitude rendah)Minifilter A(altitude tinggi)FltMgrI/O ManagerPermintaan (IRP_MJ_CREATE dll. Dunia bagian 1)Callback preCallback preKe sistem fileHasil pemrosesanCallback postCallback postSelesai (ke alur penyelesaian bagian 1)

Gambar 2: Callback pre/post. Pergi dipanggil dari altitude tinggi ke rendah, pulang dalam urutan terbalik.

Apa yang dapat dilakukan di setiap callback. Komposisi yang sama dengan «tiga pilihan driver» di bab 4.3 bagian 1 disediakan dengan API yang lebih aman.

Callback pre dipanggilApa yang dilakukan terhadap operasi iniMelewatkan(jika post tidak perlu, nyatakan itu juga)Menolaksegera mengembalikan penolakan akses dll.contoh: deteksi virus, larangan tulisMenyelesaikan sendiricontoh: cloud filter mengambilentitas dan menyerahkannyaMengutak-atik parameter atau isi lalu mengalirkancontoh: filter enkripsi

Gambar 3: Pilihan callback pre. «Melihat, menghentikan, menggantikan, menulis ulang» semuanya secara resmi dapat dilakukan.

Dan pekerjaan rumah bagian 4 ditarik di sini — minifilter juga dapat hadir di Fast I/O (jalan pintas yang tidak membuat IRP). Karena FltMgr juga mengalirkan mekanisme callback ke jalur Fast I/O, tidak ada «tidak terlihat jika jalan pintas dilalui» seperti era legacy. Alasan baris FASTIO_ berbaris di log Procmon adalah berkat posisi berdiri ini.

4. Altitude — «ketinggian» yang memutuskan urutan

Ketika beberapa filter tertarik pada operasi yang sama, siapa yang melihat lebih dulu adalah masalah besar. Jika antivirus tidak melihat sebelum enkripsi, ia terpaksa memindai ciphertext; alat pemantauan tidak dapat mengamati keseluruhan kecuali berada di atas semua orang.

Yang memutuskan urutan ini adalah altitude (ketinggian). Grup urutan muat dan pita nomor didefinisikan per jenis filter. Secara tepat, satuan yang mendapat altitude bukan seluruh driver, melainkan «instans» minifilter yang dilampirkan ke volume. Nomornya unik, dan semakin besar angkanya semakin di atas stack (lebih dekat ke aplikasi).4 Satu driver dapat punya beberapa definisi instans dan muncul di ketinggian berbeda; itulah sebabnya daftar fltmc instances per instans.

Lebih dekat ke aplikasi (angka lebih besar)FSFilter Activity Monitor: 360000–389999pengamatan dan pencatatan I/O (Procmon di sini)FSFilter Undelete: 340000–349999pemulihan file yang dihapusFSFilter Anti-Virus: 320000–329999deteksi dan pemberantasan virusFSFilter Replication: 300000–309999replikasi ke remoteFSFilter Continuous Backup: 280000–289999cadangan berkelanjutanLebih ke bawah: Content Screener /Quota Management / System Recovery /pita enkripsi, kompresi, dll. berlanjutLebih dekat ke sistem file (angka lebih kecil)

Gambar 4: Pita altitude (kutipan). Setiap kegunaan punya «ketinggian yang harus diduduki».

Yang penting adalah bahwa nomor ini dialokasikan dan dikelola oleh Microsoft.5 Vendor tidak menamai sendiri melainkan mengajukan dan menerima — karena itu di PC mana pun tatanan «pemantauan di atas antivirus, antivirus di atas enkripsi» terjaga. Inilah jawaban terhadap «lotre urutan muat» era legacy.

Tujuan pengajuan jika Anda membuat minifilter sendiri. Untuk pengembang, satu langkah berikutnya saja. Altitude diajukan mengikuti prosedur Request a Filter Altitude Identifier, dengan subjek «Filter altitude request», dikirim sebagai email berbahasa Inggris ke fsfcomm@microsoft.com. Nama perusahaan, kontak (alias perusahaan yang dapat dipakai jangka panjang, bukan pribadi), nama produk, URL produk, deskripsi filter, nama file driver, jenis filter, jenis mulai, grup urutan muat yang diinginkan, dan altitude yang diinginkan, semuanya harus diisi. Perkirakan 30 hari kerja untuk pemrosesan, tidak ada loket darurat, dan nomor yang dialokasikan bisa berbeda dari yang diinginkan, juga dinyatakan dengan tegas.8 Selain itu, jika perusahaan sudah punya altitude bilangan bulat di grup urutan muat yang sama, Anda boleh memutuskan sendiri nilai dengan desimal pada nomor itu (contoh: 325000.3), dan dalam kasus itu cukup menghubungi lewat email setelah fakta.8

5. Perkenalan penghuni — melihat PC Anda dengan fltmc

Cukup teori; mari lihat yang nyata. Dari command prompt dengan hak administrator:

:: List of registered minifilters (with altitudes)
fltmc

:: Which filters are attached to which volumes
fltmc instances

:: View from the volume side
fltmc volumes

fltmc tanpa argumen mengeluarkan daftar yang sama dengan fltmc filters. Keluarannya empat kolom, dan contoh format yang sama juga ada di dokumentasi Microsoft.9

C:\Windows\system32>fltmc

Filter Name                     Num Instances    Altitude    Frame
------------------------------  -------------  ------------  -----
bindflt                                 1        409800         0
cldflt                                  1        409500         0
WdFilter                                4        328010         0
luafv                                   1        135000         0
FileInfo                                4         45000         0

Di atas adalah kutipan untuk penjelasan. Wajah yang berbaris dan jumlah instans berbeda per lingkungan, tetapi nilai altitude adalah nilai tetap yang dialokasikan Microsoft, jadi dapat dicocokkan dengan daftar publik yang disinggung di bab 4.

Arti kolom adalah sebagai berikut.

Kolom Arti
Filter Name Nama filter (driver)
Num Instances Ke berapa volume dilampirkan (jumlah instans bab 4)
Altitude Altitude. Semakin besar, semakin dekat ke aplikasi
Frame Nomor frame FltMgr. Jika ini <Legacy>, itu tanda filter legacy yang tidak memakai FltMgr masih hidup.9

Dari lima baris ini saja, dapat dibaca bahwa bindflt dan cldflt berada di pita FSFilter Top teratas (400000–409999), WdFilter di pita Anti-Virus (320000–329999), dan FileInfo di pita FSFilter Bottom terbawah (40000–49999). Komposisi «ketinggian yang harus diduduki per kegunaan» yang kita lihat di bab 4 dapat dikonfirmasi apa adanya sebagai angka. Dan jika Anda menjalankan fltmc lagi setelah memulai Procmon, satu baris yang dimulai PROCMON bertambah di pita Activity Monitor (360000–389999).

Wajah berbeda menurut lingkungan, tetapi penghuni khas adalah langganan seri ini.

  • WdFilter — minifilter Microsoft Defender. Berada di pita Anti-Virus. Di banyak PC, pos pemeriksaan yang dilalui setiap I/O file.
  • cldflt — filter file cloud. Pasukan pelaksana Files On-Demand OneDrive, yang menyiapkan entitas ketika reparse point (placeholder) yang kita lihat di bagian 5 dibuka.10
  • PROCMON24 (dll.) — minifilter sementara pita Activity Monitor yang hanya muncul selama Process Monitor berjalan. Inilah rahasia Procmon dapat melihat semua I/O.11 Coba jalankan fltmc sebelum dan sesudah memulai, lalu bandingkan.
  • Selain itu, perangkat lunak cadangan, produk enkripsi (pencegahan kebocoran informasi), EDR, penyimpanan virtualisasi — semakin PC bisnis, semakin banyak penghuni.

Jika kita meninjau alat Procmon yang dipakai sejak bagian 1 dari luar kotak alat di bagian terakhir, terbentuk sirkulasi yang rapi: «pengamat pun, sebenarnya, adalah penghuni mekanisme yang sama dengan yang diamati».

6. Di mana antivirus menghabiskan waktu

Dampak praktis terbesar filter adalah biaya pemindaian antivirus. Berikut diagram di mana waktu terjadi (detail berbeda per produk; berikut adalah bentuk khas).

NTFSMinifilter AVAplikasiNTFSMinifilter AVAplikasipre-create: penilaian awal jalur atau kebijakanJika file belum dipindai,memindai isi di sini danjika ada masalah membatalkan buka── penyebab utama buka menjadi lambatFile yang diubah menjadisasaran pindai ulang saat ditutup dll.Pada banyak file kecil (hasil antara build dll.)bolak-balik ini menumpuk sebanyak jumlah fileMembuka fileMelewatkan (eksekusi buka)Buka berhasil (post-create)Jika tidak ada masalah, handle dikembalikanMenulis / menutup

Gambar 5: Titik terjadinya biaya pemindaian. Per file kecil, tetapi menjadi dominan jika puluhan ribu file.

Dengan ini, dua topik praktis dapat dipahami dengan tepat.

Arti teknis pengaturan pengecualian. Pada I/O jalur yang cocok dengan daftar pengecualian, pemrosesan pemindaian filter dilewati. Filter tidak hilang dari stack; kenyataannya adalah bahwa keputusan «jangan periksa» dibuat lebih awal. Dan ada satu batasan penting lagi — pengecualian hanya berlaku untuk filter produk yang memegang pengaturan itu sendiri. Pengaturan pengecualian Microsoft Defender mengubah pemindaian WdFilter, dan tidak memengaruhi sama sekali perilaku minifilter lain yang tinggal bersama (antivirus pihak lain, EDR, cadangan, enkripsi, dll.). Ketika «sudah ditambah pengecualian tetapi masih lambat», curigai kemungkinan penghuni lain yang menghabiskan waktu (perbandingan fltmc bab 7). Efeknya besar, tetapi pengecualian pasti melemahkan perlindungan di lokasi itu. Dokumentasi Microsoft juga berulang kali memperingatkan bahwa pengecualian mengurangi pertahanan, jadi seminimal mungkin di atas penilaian risiko.6 Praktik penanganan deteksi salah dan dampak kinerja dibahas di «Jika aplikasi Windows buatan sendiri diperlakukan sebagai virus».

Jawaban baru bernama Dev Drive. Volume khusus yang dirancang untuk beban kerja pengembangan (banyak file kecil), di mana Microsoft Defender berjalan dalam mode kinerja (pemindaian asinkron). Diposisikan sebagai alternatif yang lebih aman terhadap pengecualian folder; secara default filter tambahan tidak dilampirkan, sementara peringatan kuat terhadap operasi melepas semua filter juga dinyatakan dengan tegas.7 Ini rekomendasi Microsoft saat ini terhadap «ingin mempercepat build tetapi takut pengecualian».

7. Prosedur investigasi «hanya lingkungan itu yang lambat»

Alat yang ditumpuk sepanjang seri, terakhir dirangkum menjadi satu prosedur.

YaYaTidakTidak (sporadis)Gejala: aplikasi sama tetapi hanya lingkungan tertentuakses filenya lambatLihat kolom Duration di Procmonoperasi mana (IRP_MJ_CREATE? WRITE?)yang menghabiskan waktuOperasi tertentu seragam lambat?Bandingkan fltmc instances dengan lingkungan yang cepatlihat selisih konfigurasi filterFilter selisih yang menjadi penyebab?Pengaturan pengecualian (dengan penilaian risiko) ataupertimbangan Dev Drive / konsultasi ke vendorCurigai selain filter:cache (bagian 4) / fragmentasi atau MFT (bagian 5) /tujuan jaringan (UNC) / perangkat itu sendiri

Gambar 6: Pemilahan kelambatan yang disebabkan filter. Kuncinya adalah «waktu yang diambil per operasi» dan «selisih konfigurasi filter antar lingkungan».

Poinnya dua. Pertama, Procmon punya waktu yang diambil per operasi (Duration). Jika «lambat» dapat dipecah menjadi «operasi mana yang lambat», pencarian pelaku sudah setengah selesai. Kedua, selisih lingkungan sering adalah selisih konfigurasi filter. Mesin pengembangan dan mesin produksi, PC sendiri dan PC pelanggan — cukup menyusun keluaran fltmc, kandidat yang harus dicurigai sudah terlihat.

Tiga langkah pertama jika belum pernah menyentuh Procmon. Kolom Duration secara default tidak ditampilkan, jadi operasinya saja ditulis agar tidak berhenti di sini.

  1. Mulai Procmon.exe sebagai administrator.
  2. Buka Options menu > Select Columns…, dan centang Duration dari daftar kolom.
  3. Di Filter menu > Filter… (Ctrl+L), masukkan Process Name / is / nama exe sasaran / Include, dan tekan tombol Add lalu OK (tanpa Add, syarat tidak masuk).

Setelah itu, klik kolom Duration untuk mengurutkan, maka operasi yang memakan waktu berkumpul di atas. Untuk agregasi per proses atau per file, Tools menu > File Summary juga dapat dipakai. Operasi ProcMon secara umum dirangkum di «Panduan praktis Process Monitor (ProcMon)».

8. Penutup seri — peta 6 bagian

Dengan ini, semua kotak peta yang digambar di bagian 1 sudah dibuka. Seluruhnya dalam satu lembar.

Penyelesaian kembali ke siniI/O dengan cache aktif bekerja sama(sistem file memanggil fungsi cache)Interupsi → selesai (bagian 1)AplikasiReadFile / WriteFile / async-awaitBagian 2: I/O sinkron dan asinkronmode handle dan OVERLAPPEDBagian 3: IOCP dan thread pool .NETpenerimaan penyelesaian dan eksekusi kelanjutanBagian 1: I/O Manager dan IRPresolusi nama, tiga objek, device stackBagian 6: filter dan minifilterFltMgr, altitude, pre/postBagian 4: Cache Managertampilan 256 KB, lazy writer, Fast I/O(bekerja sama dengan NTFS)Bagian 5: NTFSMFT, stream, tautan, dua jurnalStorage stack dan perangkat

Gambar 7: Peta seluruh seri. Cache Manager bukan «lapisan yang dilewati» melainkan mitra yang bekerja sama dengan sistem file; saat cache miss, permintaan dari NTFS ke penyimpanan dikeluarkan.

9. Ringkasan — penutup seri

Ringkasan bagian terakhir.

  • Penyelaan ke I/O adalah titik perluasan yang diakui OS, dan standar saat ini adalah pendaftaran callback ke FltMgr (minifilter). Urutan diputuskan secara deterministik oleh altitude, dan Microsoft mengalokasikan serta mengelola nomornya.245
  • Gerakannya callback pre/post. Dapat melewatkan, menolak, menggantikan, menulis ulang, dan juga hadir di Fast I/O. Procmon, Defender, maupun OneDrive, semuanya penghuni mekanisme yang sama.11110
  • Pengaturan pengecualian = melewati pemindaian, dan itu trade-off dengan perlindungan. Untuk volume pengembangan ada pilihan yang lebih aman: Dev Drive (pemindaian asinkron).67
  • «Hanya lingkungan itu yang lambat» dipilah dari Duration Procmon dan selisih konfigurasi fltmc — alat seri ini menjadi prosedur investigasi apa adanya.

Dan kesimpulan seluruh seri dalam satu baris adalah ini — I/O Windows adalah desain yang konsisten, yang memutuskan tujuan di namespace, mengubah permintaan menjadi paket (IRP) dan mengalirkannya antar lapisan, dan membuat setiap lapisan dapat memilih «melihat, menitipkan, menggantikan». Di bawah satu baris File.ReadAllText, struktur enam bagian ini bergerak setiap kali. Alih-alih menghafal perilaku API, dapat menurunkan «seharusnya demikian» dari peta ini — itulah kekuatan yang ingin seri ini berikan. Terima kasih telah menemani perjalanan yang panjang.

Artikel terkait

Area konsultasi terkait

KomuraSoft LLC menangani investigasi masalah kinerja dan bug aplikasi bisnis Windows yang melibatkan driver filter, seperti «hanya lingkungan tertentu yang lambat» atau «perangkat lunak keamanan mengganggu aplikasi sendiri».

Tautan referensi

  1. Microsoft Learn, About file system filter drivers. Tentang driver filter sistem file sebagai driver opsional yang dapat menyela (mengintersepsi) permintaan yang menuju sistem file atau driver filter lain; dengan menyela permintaan, fungsi dapat diperluas atau diganti sebelum sampai ke tujuan asli, dan permintaan dapat direkam, dipantau, datanya diubah, atau perilakunya dicegah; dan bahwa utilitas antivirus, program enkripsi, sistem hierarchical storage management, dan sebagainya adalah contoh driver filter.  2 3

  2. Microsoft Learn, Filter Manager Concepts. Tentang Filter Manager (FltMgr) sebagai driver mode kernel yang menyertai Windows dan memublikasikan fungsi yang menyederhanakan pengembangan driver minifilter; minifilter yang dapat mendaftarkan pemrosesan sebelum dan sesudah operasi I/O (callback pre/post); FltMgr yang dapat dilampirkan di beberapa tempat di I/O stack sebagai frame agar hidup berdampingan dengan filter legacy; dan minifilter yang kembali ke altitude yang sama di frame yang sama bahkan setelah di-unload dan dimuat ulang.  2 3 4 5

  3. Microsoft Learn, Advantages of the Filter Manager Model. Tentang kelebihan model minifilter terhadap model filter legacy, termasuk pengendalian urutan muat filter yang lebih baik; minifilter yang, berbeda dari filter legacy, dapat dimuat kapan saja; unload yang dimungkinkan; dan lampiran ke volume DAX dan sebagainya.  2

  4. Microsoft Learn, Load order groups and altitudes for minifilter drivers. Tentang grup urutan muat per kegunaan yang didefinisikan untuk filter sistem file, dengan rentang altitude dialokasikan ke setiap grup; setiap driver filter yang punya pengidentifikasi altitude unik yang menentukan posisi relatifnya terhadap filter lain di I/O stack; dan contoh grup seperti FSFilter Activity Monitor (360000–389999, pengamatan dan pelaporan I/O), FSFilter Undelete (340000–349999), FSFilter Anti-Virus (320000–329999, deteksi dan pemberantasan virus selama I/O file), FSFilter Replication (300000–309999), FSFilter Continuous Backup (280000–289999).  2 3

  5. Microsoft Learn, Allocated altitudes. Tentang altitude minifilter yang dialokasikan dan dikelola oleh Microsoft, dengan daftar altitude yang sudah dialokasikan dipelihara secara publik; dan bahwa di daftar itu WdFilter.sys tercantum sebagai 328010 di grup FSFilter Anti-Virus, dan cldflt.sys sebagai 409500 di grup FSFilter Top.  2 3

  6. Microsoft Learn, Configure and validate exclusions for Microsoft Defender Antivirus. Tentang pengaturan pengecualian Microsoft Defender yang mengeluarkan file, folder, dan proses sasaran dari pemindaian; dan bahwa pengecualian menurunkan tingkat perlindungan, jadi harus didefinisikan dengan hati-hati di atas penilaian kebutuhan, yang diingatkan berulang.  2 3

  7. Microsoft Learn, Set up a Dev Drive on Windows 11. Tentang Dev Drive sebagai volume yang dirancang untuk beban kerja pengembangan, dengan Microsoft Defender berjalan dalam mode kinerja (pemindaian asinkron); diposisikan sebagai alternatif aman terhadap pengecualian folder (secure alternative to folder exclusions) sambil mempertimbangkan kecepatan dan kinerja; filter tambahan yang secara default tidak dilampirkan ke Dev Drive; dan peringatan bahwa operasi tanpa filter antivirus adalah risiko keamanan yang serius.  2 3

  8. Microsoft Learn, Request a Filter Altitude Identifier. Tentang pengajuan altitude filter baru yang dilakukan dengan mengirim email teks ASCII ber subjek «Filter altitude request» ke fsfcomm@microsoft.com; bahwa nama perusahaan, email kontak (alias perusahaan jangka panjang, bukan pribadi), nama produk, URL produk, deskripsi filter, nama file filter, jenis filter, jenis mulai, grup urutan muat yang diinginkan, dan altitude yang diinginkan semuanya harus diisi; bahwa pemrosesan harus diperkirakan 30 hari kerja dan tidak ada loket pengajuan selain prosedur ini; bahwa Microsoft dapat mengalokasikan altitude yang berbeda dari yang diinginkan; dan bahwa jika sudah punya altitude bilangan bulat, altitude sendiri dengan desimal di grup urutan muat yang sama dapat dibuat dan cukup dihubungi setelah fakta.  2

  9. Microsoft Learn, Blocking legacy file system filter drivers. Tentang menjalankan fltmc filters dari command prompt dengan hak administrator yang mencantumkan filter dalam empat kolom «Filter Name / Num Instances / Altitude / Frame»; bahwa yang Frame-nya <Legacy> adalah driver filter sistem file legacy yang tidak lewat FltMgr, dan pada minifilter Frame berisi angka (0 dll.).  2

  10. Microsoft Learn, Cloud Files API. Tentang Cloud Files API (cloud filter) sebagai fondasi mesin sinkronisasi (Files On-Demand OneDrive dll.) yang menampilkan file di cloud sebagai placeholder secara lokal dan mengambil entitas saat diakses.  2

  11. Microsoft Learn, Process Monitor - Sysinternals. Tentang Process Monitor sebagai alat pemantauan tingkat lanjut yang menampilkan aktivitas sistem file, registri, dan proses/thread secara real time (seperti di teks, saat berjalan dapat diamati muncul sebagai minifilter di daftar fltmc).  2

Artikel terbaru dengan tag yang sama untuk mendalami topik-topik terdekat.

Halaman-halaman ini menempatkan topik dalam konteks layanan dan keputusan yang lebih luas.

Artikel ini berkaitan langsung dengan layanan berikut.

Pertanyaan yang sering diajukan

Pertanyaan yang sering muncul dalam konsultasi tentang topik artikel ini.

Apa perbedaan driver filter sistem file dan minifilter?
Keduanya adalah «driver yang menyela permintaan I/O ke sistem file», tetapi generasi cara menyela berbeda. Filter legacy lama menumpuk objek perangkat sendiri langsung ke device stack sistem file; karena posisi ditentukan urutan muat, urutan sulit dijamin, dan ada masalah seperti tidak dapat di-unload dengan aman setelah dimuat. Standar saat ini, minifilter, adalah cara mendaftarkan callback ke Filter Manager (FltMgr) yang menyertai Windows, pada intinya «panggil saya sebelum dan sesudah operasi ini». Posisi diputuskan secara deterministik oleh nomor yang disebut altitude, dapat dimuat kapan saja, dan filter yang mengimplementasikan callback unload bahkan dapat dilepas saat berjalan. Hampir semua filter modern — antivirus, enkripsi, alat pemantauan, sinkronisasi cloud — diimplementasikan sebagai minifilter.
Mengapa perangkat lunak antivirus dapat memeriksa semua akses file?
Karena OS secara resmi menyediakan titik perluasan untuk tujuan itu. Minifilter dapat mendaftarkan kode ke Filter Manager untuk dipanggil sebelum (callback pre) dan sesudah (callback post) operasi seperti membuka, membaca, atau menulis file. Filter antivirus duduk di pita altitude yang disediakan untuk anti-virus (320000–329999), dan dapat, misalnya, memindai isi segera setelah buka file berhasil (post-create) dan, jika ada masalah, membatalkan buka itu sehingga akses gagal. Seperti yang kita lihat di bagian 1 seri ini, setiap I/O file mengalir di device stack, jadi logikanya berdiri di posisi tetap di jalur itu memungkinkan memeriksa setiap akses. Ini bukan peretasan — ini mekanisme yang tertanam dalam desain OS.
Secara teknis, apa yang dilakukan pengaturan pengecualian antivirus (pengecualian folder)?
Untuk I/O pada jalur yang cocok dengan daftar pengecualian, ia membuat filter produk itu melewati pemindaian yang seharusnya dilakukan. Filter itu sendiri tidak hilang dari stack; pemahaman yang lebih dekat adalah bahwa keputusan «jangan periksa jalur ini» dibuat lebih awal. Batasan penting adalah bahwa pengecualian hanya berlaku untuk produk yang memegang pengaturan itu. Misalnya, pengaturan pengecualian Microsoft Defender mengubah pemindaian yang dilakukan filter Defender (WdFilter), dan tidak memengaruhi perilaku minifilter lain yang duduk di sampingnya — produk antivirus pesaing, EDR, perangkat lunak cadangan, dan sebagainya. Setiap produk memerlukan pengaturan pengecualian sendiri, dan ketika «masih lambat meski sudah ditambah pengecualian», filter lain bisa menjadi penyebabnya. Dan seperti yang dokumentasi Microsoft ingatkan berulang, pengecualian melemahkan perlindungan di lokasi itu, jadi harus dijaga seminimal mungkin bersama penilaian risiko. Untuk pemakaian pengembangan, juga layak mempertimbangkan Dev Drive (mode kinerja, yaitu pemindaian asinkron), yang dirancang sebagai alternatif aman terhadap pengecualian folder.
Bagaimana Process Monitor merekam setiap operasi I/O?
Karena Procmon sendiri mendaftarkan dirinya ke Filter Manager saat mulai, sebagai minifilter di pita altitude Activity Monitor. Jika Anda menjalankan fltmc dari command prompt dengan hak administrator saat Procmon berjalan, Anda dapat mengonfirmasi bahwa filter dengan nama yang dimulai PROCMON muncul di daftar. Karena ia hadir di tahap pre dan post operasi I/O di setiap volume sebagai minifilter, ia dapat merekam tanpa celah proses mana yang melakukan operasi mana pada file mana. Alasan istilah IRP dan Fast I/O yang kita ikuti sepanjang seri muncul langsung di tampilan Procmon justru karena ia mengamati dari posisi yang berdiri tepat di jalur I/O itu sendiri.
Ketika build di mesin pengembangan lambat, haruskah saya mencurigai driver filter?
Sangat layak dicurigai. Build adalah tumpukan pembuatan, pembacaan, penulisan, dan penghapusan sejumlah besar file kecil, dan setiap satunya menjadi sasaran pemeriksaan filter (terutama pemindaian antivirus), yang membuatnya beban kerja di mana biaya filter paling mungkin muncul ke permukaan. Prosedur investigasi dasar adalah memeriksa kolom Duration Procmon untuk melihat operasi mana yang menghabiskan waktu, dan membandingkan perbedaan konfigurasi filter antar lingkungan dengan fltmc instances. Sebagai penanggulangan, di samping pengaturan pengecualian yang diadopsi setelah menilai risiko, ada juga memakai Dev Drive, yang dirancang khusus untuk volume pengembangan. Di Dev Drive, antivirus berjalan dalam mode kinerja (pemindaian asinkron), dan Microsoft memposisikannya sebagai alternatif yang lebih aman daripada pengaturan pengecualian.

Profil penulis

Halaman perkenalan penulis artikel.

Go Komura

Direktur KomuraSoft LLC

Berspesialisasi dalam pengembangan perangkat lunak Windows, konsultasi teknis, dan investigasi bug, terutama pada proyek dengan sistem yang sudah ada dan bug yang sulit direproduksi.

Kembali ke blog