Bagikan melalui


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)

Lihat juga

Struktur USB

UsbBuildGetDescriptorRequest

_URB_CONTROL_DESCRIPTOR_REQUEST