Gambaran umum kelas antarmuka perangkat

Setiap driver perangkat fisik, logis, atau virtual yang kode mode penggunanya dapat mengarahkan permintaan I/O harus memberikan nama untuk klien mode penggunanya. Menggunakan nama, aplikasi mode pengguna (atau komponen sistem lainnya) mengidentifikasi perangkat tempat perangkat meminta I/O.

Di Windows NT 4.0 dan versi sistem operasi berbasis NT yang lebih lama, driver menamai objek perangkat mereka dan kemudian menyiapkan tautan simbolis di registri antara nama-nama ini dan nama logis Win32 yang terlihat pengguna.

Dimulai dengan Windows 2000, driver tidak memberi nama objek perangkat. Sebaliknya, mereka menggunakan antarmuka perangkat yang dikelompokkan menurut kelas antarmuka perangkat. Kelas antarmuka perangkat adalah cara mengekspor fungsionalitas perangkat dan driver ke komponen sistem lain, termasuk driver lain, serta aplikasi mode pengguna. Driver dapat mendaftar dan mengaktifkan instans antarmuka perangkatdari kelas antarmuka perangkat untuk setiap objek perangkat tempat permintaan I/O mode pengguna mungkin dikirim. Setiap kelas antarmuka perangkat harus mewakili fungsionalitas konseptual yang harus didukung atau diwakili oleh antarmuka perangkat apa pun di kelas tersebut seperti kontrak I/O tertentu.

Setiap kelas antarmuka perangkat dikaitkan dengan GUID. Sistem mendefinisikan GUID untuk kelas antarmuka perangkat umum dalam file header khusus perangkat. Vendor dapat membuat kelas antarmuka perangkat tambahan.

Misalnya, tiga jenis perangkat mouse yang berbeda dapat mendaftarkan antarmuka perangkat yang merupakan anggota kelas antarmuka perangkat yang sama, bahkan jika satu terhubung melalui port USB, kedua melalui port serial, dan yang ketiga melalui port inframerah. Setiap driver mendaftarkan perangkatnya sebagai anggota kelas antarmuka GUID_DEVINTERFACE_MOUSE. GUID ini ditentukan dalam file header Ntddmou.h.

Driver dapat mendaftar dan mengaktifkan antarmuka perangkat untuk perangkat yang mereka kontrol untuk sebanyak mungkin kelas antarmuka perangkat yang mendukung fungsionalitas perangkat dan driver. Misalnya, driver untuk disk yang dapat dipasang harus mendaftar untuk kelas antarmuka disknya (GUID_DEVINTERFACE_DISK) dan kelas perangkat yang dapat dipasang (MOUNTDEV_MOUNTED_DEVICE_GUID).

Ketika driver mendaftarkan instans antarmuka perangkatdari kelas antarmuka perangkat, manajer I/O mengaitkan perangkat dan GUID kelas antarmuka perangkat dengan nama tautan simbolis. Driver harus mengaktifkanantarmuka perangkat agar tautan simbolis tersebut dapat digunakan bagi driver atau aplikasi untuk mengirim I/O. Pendaftaran nama tautan berlanjut di seluruh sistem dimulai, tetapi antarmuka perangkat harus diaktifkan oleh driver pada setiap enumerasi perangkat. Aplikasi yang menggunakan kelas antarmuka perangkat tertentu dapat mengkueri instans antarmuka perangkat di kelas tersebut dan menerima daftar nama tautan simbolis yang mewakili perangkat yang mendukung antarmuka. Aplikasi kemudian dapat menggunakan nama tautan simbolis sebagai target untuk permintaan I/O.

Jangan membingungkan antarmuka perangkat dengan antarmuka yang dapat diekspor driver sebagai respons terhadap permintaan IRP_MN_QUERY_INTERFACE . IRP tersebut digunakan untuk melewati titik masuk rutin antara driver mode kernel.