struktur USB_ENDPOINT_DESCRIPTOR (usbspec.h)
Struktur USB_ENDPOINT_DESCRIPTOR digunakan oleh driver klien USB untuk mengambil deskriptor titik akhir yang ditentukan USB. Anggota struktur ini dijelaskan dalam Spesifikasi Universal Serial Bus 3.1 yang tersedia di USB Document Library. Lihat bagian 9.6.6.
Sintaks
typedef struct _USB_ENDPOINT_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bEndpointAddress;
UCHAR bmAttributes;
USHORT wMaxPacketSize;
UCHAR bInterval;
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
Anggota
bLength
Menentukan panjang, dalam byte, dari deskriptor ini.
bDescriptorType
Menentukan jenis deskriptor. Harus diatur ke USB_ENDPOINT_DESCRIPTOR_TYPE.
bEndpointAddress
Menentukan alamat titik akhir yang ditentukan USB. Empat bit berurutan rendah menentukan nomor titik akhir. Bit berurutan tinggi menentukan arah aliran data pada titik akhir ini: 1 untuk masuk, 0 untuk keluar.
bmAttributes
Dua bit berurutan rendah menentukan jenis titik akhir, salah satu dari USB_ENDPOINT_TYPE_CONTROL, USB_ENDPOINT_TYPE_ISOCHRONOUS, USB_ENDPOINT_TYPE_BULK, atau USB_ENDPOINT_TYPE_INTERRUPT.
wMaxPacketSize
Menentukan ukuran paket maksimum yang dapat dikirim dari atau ke titik akhir ini.
bInterval
Nilai bInterval berisi interval polling untuk titik akhir interupsi dan isochronous. Untuk jenis titik akhir lainnya, nilai ini harus diabaikan. Nilai ini mencerminkan konfigurasi perangkat dalam firmware. Driver tidak dapat mengubahnya.
Interval polling, bersama dengan kecepatan perangkat dan jenis pengontrol host, menentukan frekuensi driver harus memulai interupsi atau transfer isochronous. Nilai dalam bInterval tidak mewakili jumlah waktu tetap. Ini adalah nilai relatif, dan frekuensi polling aktual juga akan bergantung pada apakah perangkat dan pengontrol host USB beroperasi pada kecepatan rendah, penuh, atau tinggi.
Jika pengontrol host atau perangkat beroperasi dengan kecepatan rendah, periode waktu antara transfer interupsi (juga dikenal sebagai "periode") polling diukur dalam satuan 1 bingkai milidetik, dan periode tersebut terkait dengan nilai dalam bInterval seperti yang ditunjukkan tabel berikut:
Nilai bInterval | Periode Polling (bingkai 1 milidetik) | Interupsi |
---|---|---|
0 hingga 15 | 8 | Didukung. |
16 hingga 35 | 16 | Didukung. |
36 hingga 255 | 32 | Didukung. |
> 255 | Interval polling > 255 dilarang oleh spesifikasi USB. |
Untuk perangkat dan pengontrol host yang dapat beroperasi dengan kecepatan penuh, periode diukur dalam satuan 1 bingkai milidetik, dan periode tersebut terkait dengan nilai dalam bInterval seperti yang ditunjukkan pada tabel berikut:
Nilai bInterval | Periode Polling (bingkai 1 milidetik) | Interupsi | Isochronous |
---|---|---|---|
1 | 1 | Didukung. | Didukung. |
2 hingga 3 | 2 | Didukung. | Didukung. |
4 hingga 7 | 4 | Didukung. | Didukung. |
8 hingga 15 | 8 | Didukung. | Didukung. |
16 hingga 31 | 16 | Didukung. | Tidak didukung. |
32 hingga 255 | 32 | Didukung. | Tidak didukung. |
> 255 | Interval polling > 255 dilarang oleh spesifikasi USB. |
Untuk perangkat dan pengontrol host yang dapat beroperasi dengan kecepatan tinggi, periode diukur dalam satuan mikroframe. Ada delapan mikroframe di setiap bingkai 1 milidetik. Periode terkait dengan nilai dalam bInterval menurut Periode rumus = 2 ** (bInterval - 1), seperti yang ditunjukkan pada tabel berikut:
Nilai bInterval | Periode Polling (mikroframe) | Interupsi | Isochronous |
---|---|---|---|
1 | 1 | Didukung. | Didukung. |
2 | 2 | Didukung. | Didukung. |
3 | 4 | Didukung. | Didukung. |
4 | 8 | Didukung. | Didukung. |
5 | 16 | Didukung. | Tidak didukung. |
6 | 32 | Didukung. | Tidak didukung. |
7 hingga 255 | 32 | Didukung. | Tidak didukung. |
> 255 | Interval polling > 255 dilarang oleh spesifikasi USB. |
Pemetaan dalam tabel sebelumnya antara periode dan interval polling valid dalam sistem operasi Windows 2000 dan yang lebih baru.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | usbspec.h (termasuk Usb100.h) |