Arsitektur HID
Arsitektur tumpukan driver HID di Windows dibangun pada driver kelas bernama hidclass.sys. Klien dan minidriver transportasi mengakses driver kelas dari mode pengguna atau mode kernel.
Driver kelas HID
Driver kelas HID yang disediakan sistem adalah driver fungsi WDM dan driver bus untuk kelas penyiapan perangkat HID (HIDClass). Komponen driver kelas HID yang dapat dieksekusi hidclass.sys. Driver kelas HID adalah lem antara klien HID dan berbagai transportasi, memungkinkan klien HID ditulis dengan cara independen dari transportasi. Tingkat abstraksi ini memungkinkan klien untuk terus bekerja (dengan sedikit atau tanpa modifikasi) ketika standar baru, atau transportasi pihak ketiga diperkenalkan.
Diagram berikut adalah representasi arsitektur HID.
Diagram sebelumnya meliputi:
- Klien HID – Mengidentifikasi Klien Windows dan pihak ketiga serta antarmukanya.
- Driver kelas HID - Hidclass.sys dapat dieksekusi.
- Minidriver transportasi HID - Mengidentifikasi transportasi Windows dan pihak ketiga serta antarmukanya.
Berikut adalah diagram tumpukan perangkat klien dan transportasi HID generik.
Berikut adalah diagram tumpukan perangkat lain yang menunjukkan koleksi keyboard dan mouse HID melalui USB.
Klien HID
Klien HID adalah driver, layanan, atau aplikasi yang berkomunikasi dengan HIDClass.sys dan sering mewakili jenis perangkat tertentu (misalnya, sensor, keyboard, mouse, dan sebagainya). Mereka mengidentifikasi perangkat melalui ID perangkat keras atau Koleksi HID tertentu dan berkomunikasi dengan Koleksi HID melalui panduan berikut.
Driver dan aplikasi mode pengguna, dan driver mode kernel, lakukan hal berikut untuk mengoperasikan koleksi HID:
- Driver dan aplikasi mode pengguna menggunakan rutinitas dukungan HIDClass (HidD_Xxx) untuk mendapatkan informasi tentang koleksi HID.
- Driver mode kernel, driver mode pengguna, dan aplikasi menggunakan rutinitas dukungan penguraian HID (HidP_Xxx), dan driver mode kernel menggunakan IOCTL driver kelas HID untuk menangani laporan HID.
Tabel berikut menyederhanakan informasi.
Mode | Driver | Aplikasi |
---|---|---|
Mode Pengguna | HidD_Xxx | HidP_Xxx |
Kernel Mode | HidD_Xxx ATAU IOCTL_HID_xxx | T/A |
Untuk informasi selengkapnya, lihat Membuka koleksi HID.
Klien HID didukung di Windows
Windows mendukung koleksi tingkat atas berikut:
Halaman penggunaan | Penggunaan | Catatan | Mode akses |
---|---|---|---|
0x0001 | 0x0001 - 0x0002 | Driver kelas mouse dan driver pemeta | Eksklusif |
0x0001 | 0x0004 - 0x0005 | Pengontrol permainan | Bersama |
0x0001 | 0x0006 - 0x0007 | Driver kelas Keyboard / Keypad dan driver pemeta | Eksklusif |
0x0001 | 0x000C | Pengalihan mode penerbangan | Bersama |
0x0001 | 0x0080 | Kontrol sistem (Daya) | Bersama |
0x000C | 0x0001 | Kontrol konsumen | Bersama |
0x000D | 0x0001 | Perangkat pena eksternal | Eksklusif |
0x000D | 0x0002 | Perangkat pena terintegrasi | Eksklusif |
0x000D | 0x0004 | Layar sentuh | Eksklusif |
0x000D | 0x0005 | Touchpad presisi (PTP) | Eksklusif |
0x0020 | *Beberapa | Sensor | Bersama |
0x0084 | 0x0004 | Baterai HID UPS | Bersama |
0x008C | 0x0002 | Pemindai kode batang (hidscanner.dll) | Bersama |
Dalam tabel sebelumnya, mode akses untuk klien HID input eksklusif untuk mencegah klien HID lain mencegat atau menerima status input global ketika mereka bukan penerima target input tersebut. Untuk alasan keamanan, Raw Input Manager (RIM) membuka semua perangkat tersebut secara eksklusif.
Jika RIM membuka perangkat dalam mode eksklusif , pengguna masih dapat membuka antarmuka perangkat HID tanpa meminta izin baca dan tulis dan mendapatkan informasi perangkat HID melalui rutinitas dukungan HIDClass (HidD_GetXxx).
Mode berbagi memungkinkan beberapa aplikasi mengakses perangkat. Misalnya, beberapa aplikasi dapat mengakses pemindai kode batang untuk menanyakan kemampuan perangkat dan mengambil statistik. Namun, mengambil data yang didekodekan dari pemindai kode batang dilakukan dalam mode eksklusif . Penggunaan ditentukan dalam Tabel Penggunaan USB-IF.
*Beberapa: Penggunaan sensor dari 0x00 – 0xFF disegmentasi untuk tujuan yang berbeda. Misalnya, 0x10 menunjukkan sensor biometrik; 0x40 menunjukkan sensor cahaya. Alokasi itu tidak bersebelahan. Untuk daftar penggunaan sensor, lihat Definisi Kelas Perangkat USB-IF untuk HID. Untuk informasi tentang penggunaan sensor yang didukung di Windows, lihat Penggunaan Sensor HID.
Pengemudi transportasi HID
Driver kelas HID dirancang untuk menggunakan minidriver HID untuk mengakses perangkat input perangkat keras. Minidriver HID mengabstraksi operasi khusus perangkat dari perangkat input yang didukungnya. Minidriver HID mengikat operasinya ke driver kelas HID dengan mendaftar dengan driver kelas HID. Driver kelas HID berkomunikasi dengan minidriver HID dengan memanggil rutinitas dukungan minidriver. Minidriver HID, pada gilirannya, mengirim komunikasi ke tumpukan driver ke bus atau sopir port yang mendasar.
Transportasi HID Didukung di Windows
Untuk daftar transportasi HID yang didukung, lihat Gambaran Umum Transportasi HID.
USB Generic HID Test di Windows Hardware Lab Kit (HLK) mencakup driver HidUsb dan HidClass. Tidak ada pengujian HLK untuk minidriver HID pihak ketiga.