Komunikasi antara mode pengguna dan minifilter
FltMgr mendukung komunikasi antara aplikasi mode pengguna (UM) dan minifilter mode kernel (KM) melalui port komunikasi. Contoh skenario adalah aplikasi antivirus yang perlu berkomunikasi dengan rekan minifilter KM-nya untuk memindai file untuk virus dan malware.
Minifilter mengontrol keamanan pada port dengan menentukan deskriptor keamanan yang akan diterapkan ke objek port komunikasi. Komunikasi melalui port komunikasi tidak di-buffer, sehingga lebih cepat dan lebih efisien.
Aplikasi atau layanan UM dapat membalas pesan dari minifilter untuk komunikasi dua arah. Komunikasi dijalin sebagai berikut:
Driver minifilter memanggil FltCreateCommunicationPort untuk membuat port server komunikasi. Sebagai pembuat port pendengar, minifilter langsung secara implisit mulai mendengarkan koneksi masuk pada port yang dibuat.
Ketika aplikasi atau layanan UM memanggil FilterConnectCommunicationPort untuk mencoba menyambungkan ke port, FltMgr memanggil rutinitas panggilan balik ConnectNotifyCallback minifilter dengan handel ke koneksi yang baru dibuat. Ketika panggilan balik selesai, FltMgr kemudian meneruskan pemanggil UM handel file terpisah yang mewakili titik akhir pemanggil UM ke koneksi. Pemanggil UM dapat menggunakan handel ini untuk mengaitkan beberapa port penyelesaian I/O dengan port pendengar. Kemampuan ini berguna untuk aplikasi yang perlu menangani operasi I/O dalam volume tinggi secara bersamaan.
FltMgr menerima permintaan koneksi hanya jika pemanggil UM memiliki akses yang memadai seperti yang ditentukan oleh deskriptor keamanan pada port. Setiap koneksi ke port mendapatkan antrean pesan dan titik akhir privatnya sendiri.
Menutup titik akhir (kernel atau pengguna) mengakhiri koneksi tersebut. Ketika penelepon UM menutup handelnya ke titik akhir, FltMgr memanggil rutinitas DisconnectNotifyCallback driver minifilter sehingga driver minifilter dapat menutup handelnya ke koneksi.
Menutup port server komunikasi mencegah koneksi baru tetapi tidak mengakhiri koneksi yang ada. FltMgr mengakhiri koneksi yang ada ketika driver minifilter dibongkar.
Rutinitas FltMgr untuk komunikasi antara UM dan KM
FltMgr menyediakan rutinitas dukungan berikut bagi minifilter untuk berkomunikasi dengan aplikasi UM:
Aplikasi dan layanan UM dapat menggunakan rutinitas dukungan yang disediakan sistem berikut untuk berkomunikasi dengan driver minifilter:
Rutinitas panggilan balik minifilter untuk komunikasi antara UM dan KM
Minifilter menerapkan rutinitas panggilan balik berikut untuk mendukung komunikasi antara UM dan KM. Ini meneruskan pointer ke rutinitas ini ketika memanggil FltCreateCommunicationPort.
Nama Rutin Panggilan Balik | Jenis RutinItas Panggilan Balik |
---|---|
ConnectNotifyCallback | PFLT_CONNECT_NOTIFY |
Putuskan SambunganNotifyCallback | PFLT_DISCONNECT_NOTIFY |
MessageNotifyCallback | PFLT_MESSAGE_NOTIFY |