USB_ENDPOINT_DESCRIPTOR 構造体 (usbspec.h)
USB_ENDPOINT_DESCRIPTOR構造体は、USB クライアント ドライバーによって USB 定義のエンドポイント記述子を取得するために使用されます。 この構造体のメンバーについては、「 USB ドキュメント ライブラリで使用できるユニバーサル シリアル バス 3.1 仕様」で説明されています。 セクション 9.6.6 を参照してください。
構文
typedef struct _USB_ENDPOINT_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bEndpointAddress;
UCHAR bmAttributes;
USHORT wMaxPacketSize;
UCHAR bInterval;
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
メンバー
bLength
この記述子の長さをバイト単位で指定します。
bDescriptorType
記述子の種類を指定します。 USB_ENDPOINT_DESCRIPTOR_TYPEに設定する必要があります。
bEndpointAddress
USB で定義されたエンドポイント アドレスを指定します。 4 つの下位ビットは、エンドポイント番号を指定します。 上位ビットは、このエンドポイントでのデータ フローの方向を指定します。入力の場合は 1、出力の場合は 0 です。
bmAttributes
2 つの下位ビットは、エンドポイントの種類 (USB_ENDPOINT_TYPE_CONTROL、USB_ENDPOINT_TYPE_ISOCHRONOUS、USB_ENDPOINT_TYPE_BULK、またはUSB_ENDPOINT_TYPE_INTERRUPTのいずれか) を指定します。
wMaxPacketSize
このエンドポイントとの間で送信できる最大パケット サイズを指定します。
bInterval
bInterval 値には、割り込みエンドポイントと等時性エンドポイントのポーリング間隔が含まれます。 他の種類のエンドポイントの場合、この値は無視する必要があります。 この値は、ファームウェアでのデバイスの構成を反映します。 ドライバーは変更できません。
ポーリング間隔は、デバイスの速度とホスト コントローラーの種類と共に、ドライバーが割り込みまたは等時転送を開始する頻度を決定します。 bInterval の値は、一定の時間を表していません。 これは相対値であり、実際のポーリング頻度は、デバイスと USB ホスト コントローラーが低速、完全、高速のいずれで動作するかによっても異なります。
ホスト コントローラーまたはデバイスのいずれかが低速で動作する場合、割り込み転送間の期間 (ポーリング "ピリオド" とも呼ばれます) は 1 ミリ秒フレーム単位で測定され、期間は次の表に示すように bInterval の値に関連します。
bInterval の値 | ポーリング期間 (1 ミリ秒フレーム) | 割り込み |
---|---|---|
0 から 15 | 8 | サポートされています。 |
16 から 35 | 16 | サポートされています。 |
36 から 255 | 32 | サポートされています。 |
> 255 | 255 > ポーリング間隔は、USB 仕様では禁止されています。 |
フル スピードで動作できるデバイスとホスト コントローラーの場合、期間は 1 ミリ秒フレーム単位で測定され、期間は次の表に示すように bInterval の値に関連します。
bInterval の値 | ポーリング期間 (1 ミリ秒フレーム) | 割り込み | アイソクロナス |
---|---|---|---|
1 | 1 | サポートされています。 | サポートされています。 |
2 から 3 | 2 | サポートされています。 | サポートされています。 |
4 から 7 | 4 | サポートされています。 | サポートされています。 |
8 から 15 | 8 | サポートされています。 | サポートされています。 |
16 から 31 | 16 | サポートされています。 | サポートされていません。 |
32 から 255 | 32 | サポートされています。 | サポートされていません。 |
> 255 | 255 > ポーリング間隔は、USB 仕様では禁止されています。 |
高速で動作できるデバイスとホスト コントローラーの場合、期間はマイクロフレーム単位で測定されます。 各 1 ミリ秒フレームには 8 つのマイクロフレームがあります。 ピリオドは、次の表に示すように、式 Period = 2 ** (bInterval - 1) によって bInterval の値に関連しています。
bInterval の値 | ポーリング期間 (マイクロフレーム) | 割り込み | アイソクロナス |
---|---|---|---|
1 | 1 | サポートされています。 | サポートされています。 |
2 | 2 | サポートされています。 | サポートされています。 |
3 | 4 | サポートされています。 | サポートされています。 |
4 | 8 | サポートされています。 | サポートされています。 |
5 | 16 | サポートされています。 | サポートされていません。 |
6 | 32 | サポートされています。 | サポートされていません。 |
7 から 255 | 32 | サポートされています。 | サポートされていません。 |
> 255 | 255 > ポーリング間隔は、USB 仕様では禁止されています。 |
期間とポーリング間隔の間の前のテーブルのマッピングは、Windows 2000 以降のオペレーティング システムで有効です。
要件
要件 | 値 |
---|---|
Header | usbspec.h (Usb100.h を含む) |