Mengontrol Akses Namespace Perangkat

Dalam Windows Driver Model (WDM), setiap objek perangkat memiliki namespace terkait. Nama di namespace perangkat adalah jalur yang dimulai dengan nama perangkat. Untuk perangkat bernama "\Device\DeviceName", namespace layanannya terdiri dari nama formulir "\DeviceName\\FileName". (Untuk sistem file, FileName adalah nama sebenarnya dari file pada sistem file.)

Driver WDM menerima permintaan terbuka untuk semua nama di namespace perangkat. Driver memperlakukan permintaan terbuka untuk "\DeviceName\" sebagai pembuka objek perangkat itu sendiri. Jika driver menerapkan dukungan untuk permintaan terbuka ke namespace perangkat, maka ia memperlakukan permintaan terbuka untuk "\Device\DeviceName\FileName" sebagai buka dari "file" dalam namespace objek perangkat (di mana gagasan "file" untuk perangkat ditentukan driver).

Sebagian besar driver tidak menerapkan dukungan untuk operasi terbuka ke namespace perangkat, tetapi semua driver harus memberikan pemeriksaan keamanan untuk mencegah akses tidak sah ke namespace perangkat. Secara default, pemeriksaan keamanan untuk permintaan buka file dalam namespace perangkat, (misalnya, "\DeviceName\\FileName") dibiarkan sepenuhnya hingga driver—objek perangkat ACL tidak diperiksa oleh sistem operasi.

Jika karakteristik FILE_DEVICE_SECURE_OPEN objek perangkat diatur, sistem menerapkan deskriptor keamanan objek perangkat ke semua permintaan buka file di namespace perangkat. Driver dapat mengatur FILE_DEVICE_SECURE_OPEN saat mereka membuat objek perangkat dengan IoCreateDevice atau IoCreateDeviceSecure. Untuk driver WDM, FILE_DEVICE_SECURE_OPEN juga dapat diatur dalam registri. Ini juga dapat diatur dalam registri untuk objek perangkat driver non-WDM yang dibuat oleh IoCreateDeviceSecure. Untuk informasi selengkapnya tentang mengatur properti objek perangkat, seperti karakteristik perangkat, di registri, lihat Mengatur Properti Objek Perangkat di Registri. Untuk informasi selengkapnya tentang karakteristik perangkat, lihat Menentukan Karakteristik Perangkat.

Driver untuk perangkat yang tidak mendukung namespace harus menggunakan salah satu dari dua metode untuk memastikan bahwa permintaan buka file dalam namespace perangkat ditangani dengan benar:

  • Objek perangkat driver memiliki set karakteristik perangkat FILE_DEVICE_SECURE_OPEN. Driver kemudian dapat memperlakukan permintaan terbuka apa pun ke namespace perangkat sebagai permintaan terbuka untuk objek perangkat.

  • Driver dapat gagal setiap permintaan IRP_MJ_CREATE yang menentukan parameter IrpSp-FileObject-FileName>> yang panjangnya bukan nol. Dalam hal ini, permintaan terbuka untuk perangkat tunduk pada pemeriksaan ACL sistem, sementara semua permintaan buka file dalam namespace perangkat gagal oleh driver. (Driver yang mendukung pembukaan eksklusif harus menggunakan opsi ini.)

Driver untuk perangkat yang mendukung namespace layanan juga dapat menggunakan dua metode untuk mengamankan permintaan buka file ke namespace perangkat:

  • Objek perangkat driver memiliki set karakteristik perangkat FILE_DEVICE_SECURE_OPEN. Ini memastikan bahwa pengaturan keamanan untuk perangkat berlaku secara seragam ke namespace perangkat. (Driver bertanggung jawab untuk menerapkan dukungan untuk namespace layanan dalam fungsi panggilan balik DRIVER_DISPATCH .)

  • Driver memeriksa ACL apa pun untuk nama file dalam rutinitas DispatchCreate-nya . (Bahkan dalam hal ini driver harus mengatur karakteristik FILE_DEVICE_SECURE_OPEN kecuali terbuka ke namespace perangkat dapat memiliki pengaturan keamanan yang lebih lemah daripada objek perangkat.)

Karakteristik FILE_DEVICE_SECURE_OPEN diperiksa di bagian atas tumpukan, sehingga objek perangkat filter harus menyalin anggota Karakteristik objek perangkat berikutnya yang lebih rendah setelah melampirkan.