Bagikan melalui


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.

Pengandar kelas HID

Driver kelas HID yang disediakan oleh sistem adalah driver fungsi WDM dan driver bus untuk kelas perangkat HID (HIDClass). Komponen eksekusi dari driver kelas HID hidclass.sys. Driver kelas HID menghubungkan klien HID dan berbagai jenis transportasi, memungkinkan klien HID ditulis secara terlepas dari jenis 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 tumpukan driver HID yang disederhanakan yang menunjukkan klien HID, driver kelas HID, dan komponen transportasi HID.

Diagram sebelumnya meliputi:

  • Klien HID – Mengidentifikasi Klien Windows dan pihak ketiga serta antarmukanya.
  • Driver kelas HID - hidclass.sys dapat dieksekusi.
  • Pengandar mini transportasi HID - Mengidentifikasi transportasi Windows dan pihak ketiga serta antarmuka mereka.

Berikut adalah diagram lapisan perangkat klien HID generik dan transportasinya.

Diagram susunan perangkat HID untuk klien HID generik dan transport.

Berikut adalah diagram tumpukan perangkat lain yang menunjukkan koleksi keyboard dan mouse HID melalui USB.

Diagram tumpukan perangkat HID untuk keyboard dan mouse 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 dalam mode pengguna, serta driver dalam mode kernel, melakukan hal berikut untuk mengoperasikan koleksi HID:

  • Driver dan aplikasi pada 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.

Pengaturan Pengemudi Aplikasi
Mode Pengguna HidD_Xxx HidP_Xxx
Kernel Mode HidD_Xxx ATAU IOCTL_HID_xxx Tidak tersedia

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 Dibagi
0x0001 0x0006 - 0x0007 Driver kelas Keyboard / Keypad dan driver pemeta Eksklusif
0x0001 0x000C Pengalihan mode penerbangan Dibagi
0x0001 0x0080 Pengaturan sistem (Daya) Dibagi
0x000C 0x0001 Kontrol konsumen Dibagi
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 Dibagi
0x0084 0x0004 Baterai HID UPS Dibagi
0x008C 0x0002 Pemindai kode batang (hidscanner.dll) Dibagi

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 PenggunaanUSB-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 USB-IF Definisi Kelas Perangkat 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 mengabstraksikan operasi spesifik perangkat dari perangkat input yang didukungnya. Minidriver HID menghubungkan operasinya ke driver kelas HID dengan mendaftarkan diri ke driver tersebut. Driver kelas HID berkomunikasi dengan minidriver HID dengan cara memanggil rutinitas dukungan dari minidriver. Minidriver HID, pada gilirannya, mengirim komunikasi ke bawah tumpukan driver ke driver bus atau driver port yang mendasar.

Protokol HID yang 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.