Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Deskriptor asosiasi antarmuka USB (IAD) memungkinkan perangkat mengelompokkan antarmuka milik fungsi. Artikel ini menjelaskan bagaimana driver klien dapat menentukan apakah perangkat berisi IAD untuk fungsi.
Spesifikasi Universal Serial Bus, revisi 2.0, tidak mendukung pengelompokan lebih dari satu antarmuka perangkat komposit dalam satu fungsi. Namun, grup kerja perangkat USB (DWG) membuat kelas perangkat USB yang memungkinkan fungsi dengan beberapa antarmuka. Forum Pelaksana USB mengeluarkan pemberitahuan perubahan rekayasa (ECN) yang menentukan mekanisme untuk mengelompokkan antarmuka.
ECN menentukan deskriptor USB, yang disebut deskriptor asosiasi antarmuka (IAD), yang memungkinkan produsen perangkat keras untuk menentukan pengelompokan antarmuka. Kelas perangkat yang kemungkinan besar menggunakan IAD meliputi:
- Spesifikasi kelas video USB (kode kelas - 0x0E)
- Spesifikasi kelas audio USB (kode kelas - 0x01)
- Spesifikasi kelas Usb Bluetooth (kode kelas - 0xE0)
Cara menggunakan IAD
Sub bagian berikut menjelaskan informasi tentang cara menggunakan IAD.
Perangkat komposit yang memperingatkan Windows DARI IAD di firmware
Produsen perangkat komposit biasanya menetapkan nilai nol ke kelas perangkat (bDeviceClass), subkelas (bDeviceSubClass), dan bidang protokol (bDeviceProtocol) di deskriptor perangkat, seperti yang ditentukan oleh Spesifikasi Bus Serial Universal. Produsen dapat mengaitkan setiap antarmuka individu dengan kelas dan protokol perangkat yang berbeda.
Tim inti USB-IF telah merancang kelas khusus dan kumpulan kode protokol yang memberi tahu sistem operasi bahwa satu atau beberapa IAD ada di firmware perangkat. Deskriptor perangkat harus memiliki nilai yang muncul dalam tabel berikut atau sistem operasi tidak mendeteksi IAD perangkat atau mengelompokkan antarmuka perangkat dengan benar.
| Bidang deskriptor perangkat | Nilai yang diperlukan |
|---|---|
| bDeviceClass | 0xEF |
| bDeviceSubClass | 0x02 |
| bDeviceProtocol | 0x01 |
Nilai kode memberi peringatan versi Windows yang tidak mendukung IAD untuk menginstal driver bus tujuan khusus yang mengindeks perangkat dengan benar. Tanpa kode ini dalam deskriptor perangkat, sistem mungkin gagal menghitung perangkat, atau perangkat mungkin tidak berfungsi dengan baik.
Perangkat dapat memiliki lebih dari satu IAD. Setiap IAD harus diletakkan tepat sebelum antarmuka dalam grup antarmuka yang dijelaskan oleh IAD.
Bidang kelas fungsi (bFunctionClass), subkelas (bFunctionSubclassClass), dan bidang protokol (bFunctionProtocol) iaD harus berisi nilai yang ditentukan oleh kelas perangkat USB yang menjelaskan antarmuka dalam fungsi.
Bidang kelas dan subkelas IAD tidak diperlukan untuk mencocokkan bidang kelas dan subkelas antarmuka dalam koleksi antarmuka yang dijelaskan IAD. Microsoft menyarankan agar antarmuka pertama koleksi memiliki bidang kelas dan subkelas yang cocok dengan bidang kelas dan subkelas IAD. Tabel berikut menunjukkan bidang mana yang harus cocok.
| Bidang IAD | Bidang antarmuka yang sesuai |
|---|---|
| bFunctionClass | bInterfaceClass |
| bFunctionSubclassClass | bInterfaceSubClass |
Bidang bFirstInterface dari IAD menunjukkan jumlah antarmuka pertama dalam fungsi. Bidang bInterfaceCount dari IAD menunjukkan berapa banyak antarmuka dalam koleksi antarmuka. Antarmuka dalam koleksi antarmuka IAD harus berdekatan (tidak boleh ada celah dalam daftar nomor antarmuka), sehingga hitungan dengan nomor antarmuka pertama cukup untuk menentukan semua antarmuka dalam koleksi.
Mengakses isi IAD
Driver klien tidak dapat mengakses deskriptor IAD secara langsung. Pemberitahuan Perubahan Rekayasa (Engineering Change Notification/ECN) IAD menentukan bahwa IAD harus disertakan dalam informasi konfigurasi yang dikembalikan perangkat ketika menerima permintaan dari perangkat lunak induk untuk deskriptor konfigurasi (GetDescriptor configuration). Perangkat lunak host tidak dapat mengambil IAD secara langsung dengan permintaan GetDescriptor.
Namun, driver klien dapat mengajukan permintaan ke driver induk perangkat USB untuk identitas perangkat keras (ID) perangkat, dan ID perangkat keras perangkat berisi informasi yang disematkan tentang bidang IAD.
Contoh deskriptor asosiasi antarmuka USB
Bagian ini mengilustrasikan tata letak deskriptor untuk perangkat USB komposit. Contoh perangkat memiliki dua fungsi:
Fungsi kelas video
Deskriptor asosiasi antarmuka (IAD) mendefinisikan fungsi ini. Fungsi ini berisi dua antarmuka: antarmuka nol (0) dan antarmuka satu (1).
Sistem menghasilkan perangkat keras dan pengidentifikasi yang kompatibel (ID) untuk fungsi tersebut, seperti yang dijelaskan dalam Dukungan untuk Kelas Perangkat Komunikasi Seluler Nirkabel. Setelah OS cocok dengan file INF yang sesuai, sistem memuat tumpukan driver kelas video.
Fungsi perangkat masukan manusia (HID)
Fungsi ini hanya berisi antarmuka dua (2).
Sistem ini menghasilkan perangkat keras dan ID yang kompatibel untuk fungsi, seperti yang dijelaskan dalam Enumerasi Koleksi Antarmuka pada Perangkat Komposit USB. Setelah OS cocok dengan file INF yang sesuai, sistem memuat driver kelas perangkat input manusia (HID).
Deskriptornya adalah sebagai berikut:
Deskriptor perangkat
BYTE bLength 0x12
BYTE bDescriptorType 0x01
WORD bcdUSB 0x0200
BYTE bDeviceClass 0xEF
BYTE bDeviceSubClass 0x02
BYTE bDeviceProtocol 0x01
BYTE bMaxPacketSize0 0x40
WORD idVendor 0x045E
WORD idProduct 0xFFFF
WORD bcdDevice 0x0100
BYTE iManufacturer 0x01
WORD iProduct 0x02
WORD iSerialNumber 0x02
BYTE bNumConfigurations 0x01
Deskriptor konfigurasi
BYTE bLength 0x09
BYTE bDescriptorType 0x02
WORD wTotalLength 0x...
BYTE bNumInterfaces 0x03
BYTE bConfigurationValue 0x01
BYTE iConfiguration 0x01
BYTE bmAttributes 0x80 // (BUS Powered)
BYTE bMaxPower 0x19 // (50 mA)
Deskriptor asosiasi antarmuka
BYTE bLength 0x08
BYTE bDescriptorType 0x0B
BYTE bFirstInterface 0x00
BYTE bInterfaceCount 0x02
BYTE bFunctionClass 0x0E
BYTE bFunctionSubClass 0x03
BYTE bFunctionProtocol 0x00
BYTE iFunction 0x04
Deskriptor antarmuka pengendalian video
BYTE bLength 0x09
BYTE bDescriptorType 0x04
BYTE bInterfaceNumber 0x00
BYTE bAlternateSetting 0x00
BYTE bNumEndpoints 0x01
BYTE bInterfaceClass 0x0E
BYTE bInterfaceSubClass 0x01
BYTE bInterfaceProtocol 0x00
BYTE iInterface 0x05
Deskriptor khusus kelas kontrol video
. . . .
. . . .
. . . .
Deskriptor titik akhir kontrol video
. . . .
. . . .
. . . .
Penggambaran antarmuka streaming video
BYTE bLength 0x09
BYTE bDescriptorType 0x04
BYTE bInterfaceNumber 0x01
BYTE bAlternateSetting 0x00
BYTE bNumEndpoints 0x01
BYTE bInterfaceClass 0x0E
BYTE bInterfaceSubClass 0x02
BYTE bInterfaceProtocol 0x00
BYTE iInterface 0x06
Deskriptor khusus kelas streaming video
. . . .
. . . .
. . . .
Deskriptor titik akhir streaming video
. . . .
. . . .
. . . .
Deskriptor antarmuka perangkat input manusia (HID)
BYTE bLength 0x09
BYTE bDescriptorType 0x04
BYTE bInterfaceNumber 0x02
BYTE bAlternateSetting 0x00
BYTE bNumEndpoints 0x01
BYTE bInterfaceClass 0x03
BYTE bInterfaceSubClass 0x01
BYTE bInterfaceProtocol 0x01
BYTE iInterface 0x07
Deskriptor khusus kelas HID
. . . .
. . . .
. . . .
Deskriptor titik akhir HID
. . . .
. . . .
. . . .