Gambaran umum kelas antarmuka perangkat

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

Dalam 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 perangkat dari 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 dalam 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 didefinisikan dalam file header Ntddmou.h.

Driver dapat mendaftar dan mengaktifkan antarmuka perangkat untuk perangkat yang mereka kontrol untuk sebanyak mungkin kelas antarmuka perangkat yang didukung oleh perangkat dan driver. Misalnya, driver untuk disk yang dapat dipasang harus mendaftarkan diri pada kedua kelas, yaitu kelas antarmuka disk (GUID_DEVINTERFACE_DISK) dan kelas perangkat yang dapat dipasang (MOUNTDEV_MOUNTED_DEVICE_GUID).

Saat driver mendaftarkan instans antarmuka perangkat dari 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 tetap ada saat sistem dinyalakan ulang, tetapi antarmuka perangkat harus diaktifkan oleh driver pada setiap enumerasi perangkat. Aplikasi yang menggunakan kelas antarmuka perangkat tertentu dapat meminta 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 meneruskan titik masuk rutin antara driver mode kernel.