Riwayat revisi (4 pembaruan, terakhir pada 31 Aug 2026)
Catatan perubahan yang dilakukan pada artikel ini. Jika versi sebelumnya telah diarsipkan, versi itu tetap dapat dibaca melalui tautan permanen dengan DOI.
- Diterjemahkan ulang sebagai terjemahan lengkap dari naskah Jepang. Versi bahasa Indonesia sebelumnya adalah ringkasan yang hanya memindahkan sebagian naskah, sehingga bagian, tabel, gambar Mermaid, keterangan gambar, dan FAQ tidak ada. Semuanya dipulihkan sesuai naskah Jepang, dan klaim teknisnya sama dengan versi Jepang.
- Relasi dalam peta pengetahuan artikel ini ditinjau ulang. Relasi yang klaimnya lebih luas daripada teks (relasi yang hanya berlaku bersyarat, relasi yang setara dengan «mengurangi» bukan «mencegah», relasi yang merupakan rekomendasi bukan prasyarat) diubah menjadi bersyarat atau predikatnya diganti agar lebih akurat. Klaim dalam teks tidak diubah.
- «Peta pengetahuan artikel ini» ditambahkan di awal artikel. Relasi antar konsep yang dibahas dalam teks dapat dilihat dalam satu diagram. Daftar lengkap relasi (beserta URL bukti, tingkat kepastian, dan tanggal konfirmasi) serta definisi konsep utama dikumpulkan di halaman rincian peta pengetahuan, dan data yang dapat dibaca mesin dipublikasikan dalam JSON-LD dan Turtle.
- Struktur kolom keluaran `fltmc` dan cara membacanya ditambahkan (nilai yang ditampilkan berasal dari daftar alokasi altitude yang dipublikasikan Microsoft, bukan keluaran dari mesin nyata). Prosedur dan tujuan pengajuan altitude, tiga langkah pertama di Process Monitor, dan penataan label tautan seri ditambahkan.
- Publikasi pertama
Mengutip artikel ini(DOI (arsip terdaftar): 10.5281/zenodo.22175396)
DOI di bawah mengarah ke versi yang telah diarsipkan sebelumnya dan mungkin berbeda dari teks saat ini. Gunakan URL halaman ini untuk merujuk teks saat ini.
Go Komura (2026). Kedalaman I/O Windows (bagian 6, terakhir) — driver filter dan minifilter: mengapa Procmon dan pemindaian virus dapat menyela I/O. KomuraSoft LLC. https://comcomponent.com/id/blog/windows-minifilter-filter-drivers/
- DOI (arsip terdaftar)
- 10.5281/zenodo.22175396
- DOI (versi terakhir yang didaftarkan)
- 10.5281/zenodo.22175397
Ini bagian terakhir seri «Kedalaman I/O Windows».
Sejak kotak «filter sistem file (antivirus, enkripsi, Procmon, dan sejenisnya)» digambar di diagram device stack bagian 1, filter yang menyela di tengah jalur berkali-kali muncul di seri ini. Alasan Procmon dapat merekam seluruh I/O (bagian 1). «Hanya di lingkungan itu akses file lambat» (bagian 2). Reparse point yang membuat OneDrive mulai mengunduh pada saat file dibuka (bagian 5). Kali ini mekanismenya sendiri yang dibahas secara langsung — driver filter sistem file dan minifilter — dan seluruh pertanyaan yang ditunda di seri ini dijawab.
1. Intinya dulu
- «Menyela I/O» adalah titik perluasan yang diakui OS. Filter sistem file dapat melihat, mengubah, menolak, dan memproses sebagai pengganti 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 pendaftaran callback ke Filter Manager (FltMgr) yang menyertai Windows (bab 2).23
- Alur kerjanya adalah callback pre/post. Dipanggil sebelum dan sesudah setiap operasi, dalam urutan pendaftaran = urutan altitude. Meneruskan, menyelesaikan, menolak, mengubah — «pilihan driver» yang terlihat di bagian 1 dapat dipakai apa adanya (bab 3).2
- Altitude (ketinggian) yang menentukan urutan. Pita nomor dialokasikan per grup menurut kegunaan (Activity Monitor 360000–389999, Anti-Virus 320000–329999, dan sebagainya), dan setiap instance yang terpasang ke volume mendapat nomor unik (bab 4).45
- Penghuni PC dapat dilihat dengan
fltmc. Procmon (hanya saat berjalan), antivirus, cloud filter OneDrive — semuanya berbaris di sini (bab 5). - Pengaturan pengecualian antivirus berarti «melewati pemindaian produk itu sendiri», dan tidak memengaruhi minifilter lain. Pengecualian adalah trade-off yang melemahkan perlindungan. 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).
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 34, beserta bukti dan tingkat kepastian) serta definisi konsep utama dikumpulkan di halaman rincian peta pengetahuan (dalam bahasa Jepang). Data: JSON-LD / Turtle
2. Sejarah filter yang menyela — dari filter legacy ke FltMgr
Driver filter sistem file adalah driver yang dapat menyela permintaan yang menuju sistem file (atau volume di bawahnya). Permintaan dapat direkam, dipantau, isinya diubah, bahkan ditolak atau diproses sebagai pengganti — fondasi perangkat lunak seperti antivirus, enkripsi, cadangan, dan hierarchical storage.1
Cara implementasi lama (filter legacy) menumpuk objek perangkatnya sendiri langsung ke device stack yang dibahas di bagian 1. Sebagai mekanisme, itu lurus, tetapi dalam praktik penuh masalah: urutan penumpukan bergantung pada urutan muat dan sulit dijamin; sekali tertumpuk, 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
flowchart TB
subgraph OLD["Cara legacy"]
L1["Filter legacy A"]
L2["Filter legacy B"]
LFS1["Sistem file"]
L1 --> L2
L2 --> LFS1
NOTE1["Urutan terserah urutan muat<br/>unload aman tidak mungkin"]
end
subgraph NEW["Cara minifilter (standar saat ini)"]
FM["Filter Manager (FltMgr)<br/>menyertai OS. Yang berdiri di stack hanya ini"]
M1["Minifilter A (altitude tinggi)"]
M2["Minifilter B (altitude rendah)"]
LFS2["Sistem file"]
FM -. "Pendaftaran callback" .- M1
FM -. "Pendaftaran callback" .- M2
FM --> LFS2
NOTE2["Urutan deterministik lewat altitude<br/>dapat dimuat kapan saja<br/>(filter yang mendukung juga dapat di-unload)"]
end
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 mengimplementasikannya, atau yang menolak, tidak dapat dilepas).3 Agar 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 di-unload lalu dimuat ulang.2 Antivirus, pemantauan, dan perangkat lunak sinkronisasi modern hampir semuanya minifilter ini.
3. Cara kerja 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.
sequenceDiagram
participant IOM as I/O Manager
participant FM as FltMgr
participant A as Minifilter A<br/>(altitude tinggi)
participant B as Minifilter B<br/>(altitude rendah)
participant FS as NTFS
IOM->>FM: Permintaan (IRP_MJ_CREATE dll. Dunia bagian 1)
FM->>A: Callback pre
FM->>B: Callback pre
FM->>FS: Ke sistem file
FS-->>FM: Hasil pemrosesan
FM-->>B: Callback post
FM-->>A: Callback post
FM-->>IOM: Selesai (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.
flowchart TB
PRE["Callback pre dipanggil"]
Q{"Apa yang dilakukan terhadap operasi ini"}
PASS["Meneruskan<br/>(jika post tidak perlu, nyatakan itu juga)"]
DENY["Menolak<br/>segera mengembalikan penolakan akses dll.<br/>contoh: deteksi virus, larangan tulis"]
DONE["Menyelesaikan sendiri<br/>contoh: cloud filter mengambil<br/>isi sebenarnya lalu menyerahkannya"]
MOD["Mengubah parameter atau isi lalu meneruskan<br/>contoh: filter enkripsi"]
PRE --> Q
Q --> PASS
Q --> DENY
Q --> DONE
Q --> MOD
Gambar 3: Pilihan callback pre. «Melihat, menghentikan, mengambil alih, mengubah» semuanya secara resmi dapat dilakukan
Dan pertanyaan yang tertunda di bagian 4 dijawab di sini — minifilter juga dapat hadir di Fast I/O (jalan pintas yang tidak membuat IRP). Karena FltMgr mengalirkan mekanisme callback ke jalur Fast I/O juga, tidak ada lagi «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 menentukan 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 pihak lain.
Yang menentukan 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 «instance» minifilter yang terpasang ke volume. Nomornya unik, dan semakin besar angkanya semakin di atas stack (lebih dekat ke aplikasi).4 Satu driver dapat memiliki beberapa definisi instance dan muncul di ketinggian berbeda; itulah sebabnya daftar fltmc instances per instance.
flowchart TB
APP["Lebih dekat ke aplikasi (angka lebih besar)"]
G1["FSFilter Activity Monitor: 360000–389999<br/>pengamatan dan pencatatan I/O (Procmon di sini)"]
G2["FSFilter Undelete: 340000–349999<br/>pemulihan file yang dihapus"]
G3["FSFilter Anti-Virus: 320000–329999<br/>deteksi dan pemberantasan virus"]
G4["FSFilter Replication: 300000–309999<br/>replikasi ke remote"]
G5["FSFilter Continuous Backup: 280000–289999<br/>cadangan berkelanjutan"]
G6["Lebih ke bawah: Content Screener /<br/>Quota Management / System Recovery /<br/>pita enkripsi, kompresi, dll. berlanjut"]
FS["Lebih dekat ke sistem file (angka lebih kecil)"]
APP --> G1 --> G2 --> G3 --> G4 --> G5 --> G6 --> FS
Gambar 4: Pita altitude (kutipan). Setiap kegunaan punya «ketinggian yang harus diduduki»
Yang penting: 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 «undian urutan muat» era legacy.
Tujuan pengajuan jika 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 memiliki altitude bilangan bulat di grup urutan muat yang sama, nilai dengan desimal pada nomor itu (contoh: 325000.3) boleh diputuskan sendiri; dalam kasus itu cukup menghubungi lewat email setelah fakta.8
5. Perkenalan penghuni — melihat PC dengan fltmc
Cukup teori; mari lihat yang nyata. Dari command prompt dengan hak administrator:
:: Daftar minifilter yang terdaftar (beserta altitude)
fltmc
:: Filter mana yang terpasang di volume mana
fltmc instances
:: Dilihat dari sisi volume
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. Filter yang muncul dan jumlah instance 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 terpasang (jumlah instance di 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 terlihat di bab 4 dapat dikonfirmasi apa adanya sebagai angka. Dan jika fltmc dijalankan lagi setelah Procmon dimulai, satu baris yang dimulai PROCMON bertambah di pita Activity Monitor (360000–389999).
Daftar yang muncul berbeda menurut lingkungan, tetapi penghuni khas adalah yang sudah sering muncul di 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. Komponen yang menjalankan Files On-Demand OneDrive, yang menyiapkan isi sebenarnya ketika reparse point (placeholder) yang dibahas di bagian 5 dibuka.10PROCMON24(dll.) — minifilter sementara pita Activity Monitor yang hanya muncul selama Process Monitor berjalan. Inilah rahasia Procmon dapat melihat seluruh I/O.11 Jalankanfltmcsebelum dan sesudah memulai, lalu bandingkan.- Selain itu, perangkat lunak cadangan, produk enkripsi (pencegahan kebocoran informasi), EDR, penyimpanan virtualisasi — semakin PC bisnis, semakin banyak penghuninya.
Jika alat Procmon yang dipakai sejak bagian 1 ditinjau dari luar kotak alat di bagian terakhir, terbentuk sirkulasi yang rapi: «pengamat pun, ternyata, 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).
sequenceDiagram
participant App as Aplikasi
participant AV as Minifilter AV
participant FS as NTFS
App->>AV: Membuka file
Note over AV: pre-create: penilaian awal jalur atau kebijakan
AV->>FS: Meneruskan (eksekusi buka)
FS-->>AV: Buka berhasil (post-create)
Note over AV: Jika file belum dipindai,<br/>memindai isi di sini dan<br/>jika ada masalah membatalkan buka<br/>── penyebab utama buka menjadi lambat
AV-->>App: Jika tidak ada masalah, handle dikembalikan
App->>AV: Menulis / menutup
Note over AV: File yang diubah menjadi<br/>sasaran pindai ulang saat ditutup dll.
Note over App,FS: Pada banyak file kecil (hasil antara build dll.)<br/>bolak-balik ini menumpuk sebanyak jumlah file
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 ke jalur yang cocok dengan daftar pengecualian, pemrosesan pemindaian filter dilewati. Filter tidak hilang dari stack; kenyataannya, keputusan «jangan periksa» diambil lebih awal. Dan ada satu batasan penting lagi — pengecualian hanya berlaku untuk filter produk yang memiliki 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, dan sebagainya). 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 terpasang, 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.
flowchart TB
S["Gejala: aplikasi sama tetapi hanya lingkungan tertentu<br/>akses filenya lambat"]
P1["Lihat kolom Duration di Procmon<br/>operasi mana (IRP_MJ_CREATE? WRITE?)<br/>yang menghabiskan waktu"]
Q1{"Operasi tertentu seragam lambat?"}
F1["Bandingkan fltmc instances dengan lingkungan yang cepat<br/>lihat selisih konfigurasi filter"]
Q2{"Filter selisih yang menjadi penyebab?"}
A1["Pengaturan pengecualian (dengan penilaian risiko) atau<br/>pertimbangan Dev Drive / konsultasi ke vendor"]
A2["Curigai selain filter:<br/>cache (bagian 4) / fragmentasi atau MFT (bagian 5) /<br/>tujuan jaringan (UNC) / perangkat itu sendiri"]
S --> P1 --> Q1
Q1 -->|"Ya"| F1 --> Q2
Q2 -->|"Ya"| A1
Q2 -->|"Tidak"| A2
Q1 -->|"Tidak (sporadis)"| A2
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.
- Mulai
Procmon.exesebagai administrator. - Buka Options menu > Select Columns…, dan centang Duration dari daftar kolom.
- 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.
flowchart TB
APP["Aplikasi<br/>ReadFile / WriteFile / async-await"]
API["Bagian 2: I/O sinkron dan asinkron<br/>mode handle dan OVERLAPPED"]
IOCP["Bagian 3: IOCP dan thread pool .NET<br/>penerimaan penyelesaian dan eksekusi kelanjutan"]
IOM["Bagian 1: I/O Manager dan IRP<br/>resolusi nama, tiga objek, device stack"]
FLT["Bagian 6: filter dan minifilter<br/>FltMgr, altitude, pre/post"]
CACHE["Bagian 4: Cache Manager<br/>view 256 KB, lazy writer, Fast I/O<br/>(bekerja sama dengan NTFS)"]
NTFS["Bagian 5: NTFS<br/>MFT, stream, tautan, dua jurnal"]
HW["Storage stack dan perangkat"]
APP --> API
API --> IOM
IOCP -. "Penyelesaian kembali ke sini" .-> APP
IOM --> FLT
FLT --> NTFS
NTFS -. "I/O dengan cache aktif bekerja sama<br/>(sistem file memanggil fungsi cache)" .- CACHE
NTFS --> HW
HW -. "Interupsi → selesai (bagian 1)" .-> IOCP
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
- Bagian 1: gambaran keseluruhan — setiap baca tulis menjadi IRP
- Bagian 2: sinkron/asinkron — arti sesungguhnya OVERLAPPED
- Bagian 3: IOCP — lapisan di bawah async/await
- Bagian 4: cache — kapan WriteFile sampai ke disk
- Bagian 5: NTFS — memahami sistem file lewat MFT
- Bagian 6: filter dan minifilter (artikel ini) — mengapa Procmon dan pemindaian virus dapat menyela I/O
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 ditentukan secara deterministik oleh altitude, dan Microsoft mengalokasikan serta mengelola nomornya.245
- Alur kerjanya callback pre/post. Dapat meneruskan, menolak, mengambil alih, mengubah, 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: tujuan ditentukan di namespace, permintaan diubah menjadi paket (IRP) dan dialirkan antar lapisan, dan setiap lapisan dapat memilih «melihat, menitipkan, mengambil alih». Di bawah satu baris File.ReadAllText, struktur enam bagian ini bergerak setiap kali. Alih-alih menghafal perilaku API, «seharusnya demikian» dapat diturunkan dari peta ini — itulah kekuatan yang ingin diberikan seri ini. Terima kasih telah menemani perjalanan yang panjang.
Artikel terkait
- Kedalaman I/O Windows (bagian 1) — setiap baca tulis menjadi IRP: gambaran keseluruhan sistem I/O
- Kedalaman I/O Windows (bagian 4) — Cache Manager: kapan WriteFile sampai ke disk
- Kedalaman I/O Windows (bagian 5) — struktur internal NTFS: memahami sistem file lewat MFT
- Panduan praktis Process Monitor (ProcMon) — mengidentifikasi «pengaturan tidak terbaca» / «ACCESS DENIED» dalam 10 menit
- Jika aplikasi Windows buatan sendiri diperlakukan sebagai virus — penanganan deteksi salah Microsoft Defender, dan cara menghadapi dampak kinerja
- Praktik Process Explorer / Handle / VMMap — menelusuri hang, kebocoran, dan «file sedang dipakai» dari keadaan saat ini
- Daftar periksa keamanan minimum aplikasi Windows
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
-
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
-
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 terpasang 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
-
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
-
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
-
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
-
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
-
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 terpasang ke Dev Drive; dan peringatan bahwa operasi tanpa filter antivirus adalah risiko keamanan yang serius. ↩ ↩2 ↩3
-
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
-
Microsoft Learn, Blocking legacy file system filter drivers. Tentang menjalankan
fltmc filtersdari 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 -
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 isi sebenarnya saat diakses. ↩ ↩2
-
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 terkait
Artikel terbaru dengan tag yang sama untuk mendalami topik-topik terdekat.
Kedalaman I/O Windows (bagian 5) — struktur internal NTFS: memahami sistem file lewat MFT
Bagian 5 seri yang menjelaskan struktur internal NTFS dengan diagram. Dari sudut pandang pengembang, artikel ini menata MFT dan rekaman f...
Kedalaman I/O Windows (bagian 4) — Cache Manager: kapan WriteFile Anda sampai ke disk
Bagian 4 seri yang menjelaskan Cache Manager Windows dengan diagram. Artikel ini merangkai cache yang diimplementasikan sebagai file mapp...
Kedalaman virtualisasi Windows (Bagian 2) — Memori yang bahkan kernel pun tidak bisa lihat: mekanisme VBS, HVCI, dan Credential Guard
Pada instalasi bersih ke perangkat keras yang kompatibel, VBS aktif secara bawaan. Hypervisor dan SLAT membentuk isolasi yang lebih kuat ...
Named pipe dalam praktik — IPC andalan Windows, dari desain sampai keamanan
Penjelasan praktis named pipe, IPC andalan di Windows. Dari sumber primer: memilih mode byte versus mode pesan, desain server yang menang...
Spurious wakeup — mengapa condition variable "bangun tanpa notifikasi" dan cara menunggu yang benar di Windows
wait pada condition variable dapat bangun meskipun notifikasi tidak datang (spurious wakeup). Artikel ini mengurai alasan spesifikasi men...
Topik terkait
Halaman-halaman ini menempatkan topik dalam konteks layanan dan keputusan yang lebih luas.
Topik teknis Windows
Portal tentang pengembangan Windows, investigasi bug, dan pemanfaatan aset yang ada.
Layanan yang terkait dengan topik ini
Artikel ini berkaitan langsung dengan layanan berikut.
Pengembangan aplikasi Windows
Aplikasi bisnis, integrasi perangkat, dan alat komunikasi, dari kebutuhan hingga pengembangan.
Pertanyaan yang sering diajukan
Pertanyaan yang sering muncul dalam konsultasi tentang topik artikel ini.
- Apa bedanya driver filter sistem file dan minifilter?
- Keduanya adalah «driver yang menyela permintaan I/O ke sistem file», tetapi generasi cara menyelanya berbeda. Filter legacy yang lama menumpuk objek perangkatnya sendiri langsung ke device stack sistem file. Posisinya ditentukan urutan muat, sehingga urutan sulit dijamin, dan setelah dimuat tidak dapat di-unload dengan aman. Standar saat ini, minifilter, mendaftarkan callback ke Filter Manager (FltMgr) yang menyertai Windows: «panggil saya sebelum dan sesudah operasi ini». Posisi ditentukan secara deterministik oleh nomor yang disebut altitude, filter dapat dimuat kapan saja, dan filter yang mengimplementasikan callback unload bahkan dapat dilepas saat sistem 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 itu. Minifilter dapat mendaftarkan kode ke Filter Manager agar dipanggil sebelum operasi (callback pre) dan sesudahnya (callback post) — misalnya membuka, membaca, atau menulis file. Filter antivirus duduk di pita altitude Anti-Virus (320000–329999). Ia dapat, misalnya, memindai isi segera setelah buka file berhasil (post-create), lalu membatalkan buka itu jika ada masalah sehingga akses gagal. Seperti yang terlihat di bagian 1 seri ini, seluruh I/O file mengalir lewat device stack. Berdiri di posisi tetap di jalur itu berarti seluruh akses dapat diperiksa. Ini bukan peretasan, melainkan mekanisme yang tertanam dalam desain OS.
- Secara teknis, apa yang dilakukan pengaturan pengecualian antivirus (pengecualian folder)?
- Untuk I/O ke jalur yang cocok dengan daftar pengecualian, filter produk itu melewati pemindaian yang biasanya dilakukannya. Filter itu sendiri tidak hilang dari stack; yang lebih dekat dengan kenyataan adalah keputusan «jangan periksa jalur ini» diambil lebih awal. Batasan penting: pengecualian hanya berlaku bagi produk yang memiliki pengaturan itu. Pengaturan pengecualian Microsoft Defender, misalnya, hanya mengubah pemindaian filter Defender (WdFilter). Ia tidak memengaruhi minifilter lain yang duduk bersama — antivirus pihak lain, EDR, perangkat lunak cadangan, dan sebagainya. Setiap produk membutuhkan pengecualian sendiri. Jika «sudah dikecualikan tetapi masih lambat», filter lain bisa menjadi penyebabnya. Dokumentasi Microsoft juga berulang kali memperingatkan bahwa pengecualian melemahkan perlindungan di lokasi itu, jadi harus seminimal mungkin bersama penilaian risiko. Untuk keperluan pengembangan, Dev Drive (mode kinerja = pemindaian asinkron) yang dirancang sebagai alternatif aman terhadap pengecualian folder juga layak dipertimbangkan.
- Bagaimana Process Monitor merekam seluruh I/O?
- Karena Procmon sendiri, saat dimulai, mendaftarkan diri ke Filter Manager sebagai minifilter di pita altitude Activity Monitor. Jika fltmc dijalankan dari command prompt dengan hak administrator saat Procmon sedang berjalan, filter dengan nama yang dimulai PROCMON muncul di daftar. Sebagai minifilter ia hadir di tahap pre dan post operasi I/O di setiap volume, sehingga dapat merekam proses mana yang melakukan operasi apa terhadap file mana tanpa celah. Istilah IRP dan Fast I/O yang muncul sepanjang seri ini tampil apa adanya di Procmon justru karena pengamatan dilakukan dari posisi yang berdiri tepat di jalur I/O.
- Jika build di mesin pengembangan lambat, apakah driver filter perlu dicurigai?
- Sangat layak dicurigai. Build adalah tumpukan pembuatan, baca-tulis, dan penghapusan sejumlah besar file kecil. Setiap file itu menjadi sasaran pemeriksaan filter (terutama pemindaian antivirus), sehingga ini beban kerja di mana biaya filter paling mudah muncul ke permukaan. Prosedur investigasi dasarnya: lihat kolom Duration di Procmon untuk memastikan waktu hilang di operasi mana, lalu bandingkan konfigurasi filter antar lingkungan dengan fltmc instances. Penanganannya, selain pengaturan pengecualian setelah menilai risiko, termasuk 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.