最終更新:2022-01-20 (木) 18:14:03 (989d)
インターフェイスディスクリプタ
Top / インターフェイスディスクリプタ
Field | Offset | Size | 詳細 |
bLength? | 0 | 1 | ディスクリプタの長さ。INTERFACE は 9(0x9)Byte 固定。 |
bDescriptorType | 1 | 1 | ディスクリプタの種別。INTERFACE は 4。 |
bInterfaceNumber | 2 | 1 | インターフェイスの識別番号。複合デバイス(Composite device)の場合、異なった値が設定されなければならない。デフォルトは 0。 |
bAlternateSetting | 3 | 1 | 代替設定を選択するための値。bInterfaceNumberが同じで bAlternateSetting が異なる別々のディスクリプタを持っている場合、ホスト側からのSET_INTERFACEコマンドで切り替えることが出来る。デフォルトは 0。 |
bNumEndpoints? | 4 | 1 | エンドポイント数(ただし エンドポイント0 は除く) |
bInterfaceClass | 5 | 1 | クラス番号(USB/クラス)。bDeviceClass(デバイスディスクリプタ) の設定が 0 だった場合、この設定が参照される。0x0 は未定義、0xFF は Vendor-specific。 |
bInterfaceSubClass | 6 | 1 | サブクラス番号。0x0 と 0xFF 以外は クラス番号に依存する。 HIDの時はブートプロトコルに対応しているかどうかのフラグとして使われる。 |
bInterfaceProtocol | 7 | 1 | プロトコル番号。0x0 と 0xFF 以外は クラス、サブクラス番号に依存する。 HIDのときはbInterfaceSubClassが指定されている時だけ意味を持つ。 |
iInterface | 8 | 1 | Interface の STRING Descriptor の Index 番号。0の場合、指定無し。 |
USB/代替設定 (bAlternateSetting)
- 代替インターフェイス設定は一度にアクティブになるのは1つだけ
- bInterfaceNumberが同じでbAlternateSettingが異なる値
- アイソクロナス転送を使用するデバイスが代替インターフェイス設定を持っているのはデフォルトインターフェイスが帯域幅を要求することができないから
- GET_INTERFACE?で現在アクティブなbAlternateSettingを取得
- SET_INTERFACEでアクティブなbAlternateSettingを設定