コントロール チャネルの特性
デバイスの制御チャネルは、その USB 制御エンドポイントです。 ホストからデバイスへの制御メッセージは、SEND_ENCAPSULATED_COMMAND転送として送信されます。 この転送は、次の表で定義されています。
BmRequestType | bRequest | wValue | wIndex | wLength | データ |
---|---|---|---|---|---|
0x21 |
0x00 |
0x0000 |
通信クラス インターフェイス記述子の bInterfaceNumber フィールド |
制御メッセージ・ブロックのバイト長 |
制御メッセージ・ブロック |
ホストは、入力制御メッセージの USB 制御エンドポイントを継続的にポーリングしません。 コントロール メッセージをコントロール エンドポイントに配置すると、デバイスは通信クラス インターフェイスの割り込み IN エンドポイントで通知を返す必要があります。このエンドポイントは、デバイスが制御メッセージを返すことができるたびにホストによってポーリングされます。 デバイスの割り込み IN エンドポイントからホストへの転送は、標準の USB 割り込み IN 転送です。 定義されているデバイス通知は、次の表に示すRESPONSE_AVAILABLE通知のみです。
オフセット (バイト) | 長さ (バイト) | フィールド | データ |
---|---|---|---|
0 |
4 |
通知 |
RESPONSE_AVAILABLE (0x00000001) |
4 |
4 |
予約されています。 |
0 |
RESPON Standard Edition_AVAILABLE通知を受信すると、ホストは、次の表に定義されているGET_ENCAPSULATED_RESPON Standard Edition転送を使用して制御エンドポイントから制御メッセージを読み取ります。
bmRequestType | bRequest | wValue | wIndex | wLength | データ |
---|---|---|---|---|---|
0xA1 |
0x01 |
0x0000 |
通信クラス インターフェイス記述子の bInterfaceNumber フィールド |
0x0400 (これはホストによってポストされるバッファーの最小バイト長です) |
制御メッセージ・ブロック |
何らかの理由でデバイスがGET_ENCAPSULATED_RESPON Standard Editionを受信し、コントロール エンドポイント上の有効なデータで応答できない場合は、コントロール エンドポイントをストールするのではなく、0x00に設定された 1 バイトのパケットを返す必要があります。