Bagikan melalui


Gagal Memvalidasi Objek Perangkat

Banyak driver membuat lebih dari satu jenis objek perangkat dengan memanggil IoCreateDevice. Beberapa driver membuat objek perangkat kontrol dalam rutinitas DriverEntry mereka untuk memungkinkan aplikasi berkomunikasi dengan driver, bahkan sebelum driver membuat FDO. Misalnya, driver sistem file membuat objek perangkat untuk menangani pemberitahuan sistem file ketika mereka mendaftarkan diri mereka sebagai sistem file dengan IoRegisterFileSystem.

Driver harus siap untuk permintaan IRP_MJ_CREATE untuk objek perangkat apa pun yang dibuatnya. Setelah menyelesaikan permintaan dengan status sukses, driver harus mengharapkan untuk menerima permintaan I/O yang dapat diakses pengguna pada objek file yang dibuat. Akibatnya, setiap driver yang membuat lebih dari satu objek perangkat harus memeriksa objek perangkat mana yang ditentukan oleh setiap permintaan I/O.

Misalnya, driver membuat objek perangkat kontrol keseluruhan di DriverEntry, lalu membuat sekumpulan objek perangkat lain dalam rutinitas AddDevice-nya . Misalkan rutinitas AddDevice menginisialisasi ekstensi perangkat dengan informasi tentang driver tingkat bawah, tetapi objek perangkat kontrol tidak berisi informasi ini. Dalam hal ini, semua rutinitas pengiriman harus berhati-hati untuk memeriksa setiap objek perangkat yang mereka terima. Jika tidak, driver mungkin mengalami crash saat mencoba menggunakan informasi ekstensi perangkat.