各種オペレーティング システムにおける USB 転送の最大サイズ

概要

この資料では、さまざまな Microsoft Windows オペレーティング システム環境における USB 転送の最大サイズについて説明します。

Microsoft Windows 2000

Microsoft Windows 2000 における USB 転送の最大サイズは、USB デバイス用に読み込まれるデバイス ドライバによって決定されます。USB 転送の最大サイズは、次のいずれかに該当するときに決定されます。
  • デバイス ドライバが、URB_FUNCTION_SELECT_CONFIGURATION 関数を使用してデバイスの構成を選択しているとき
  • デバイス ドライバが、URB_FUNCTION_SELECT_INTERFACE 関数を使用してデバイスの代替インターフェイスを選択しているとき
ほとんどの場合、Windows 2000 での USB 転送には、クライアント ドライバによって定義されている制限を除いて、ハード コードされたサイズ制限は存在しません。

Microsoft Windows XP および Microsoft Windows Server 2003

Microsoft Windows XP および Microsoft Windows Server 2003 では、USB 転送の最大サイズは USB ホスト コントローラのミニポート ドライバまたは USB ポート ドライバ (Usbport.sys) によって決定されます。USB 転送の最大サイズはデバイスのクライアント ドライバでは定義されていません。USB 転送の最大サイズを超える転送要求を発行すると、その要求は失敗するか、ブルー スクリーンに STOP エラーが表示されることがあります。


Windows XP または Windows Server 2003 では、エンドポイントにおけるバルク転送の最大転送サイズが 4 KB 以下の場合は、該当するトランザクションがポート ドライバによって複数の転送に分割されます。この動作により、理論的にはこれらのエンドポイントに関して USB 転送の最大サイズは無制限になりますが、マイクロソフトでは、非常に大きいサイズの転送についてはテストを行っていません。また、マイクロソフトでは、非常に大きいサイズの転送を行うことは推奨しません。


: Windows XP および Windows Server 2003 における USB 転送の最大サイズは、現時点では、クライアント ドライバには適用されません。この動作は、Windows の将来のバージョンでは変更される可能性があります。

詳細

USB 転送の最大サイズ

Windows 2000

転送の種類最大転送サイズ報告されるエラー
コントロール (エンドポイント 0)
4 KB
USBD_STATUS_INVALID_PARAMETER
コントロール (0 以外のエンドポイント)
64 KB
未定義
インタラプト (割り込み)
未定義
なし
UHCI バルク
未定義
なし
OHCI バルク
未定義 (「注」を参照)
なし
注 : Windows 2000 では、転送に関して以下の事項に注意してください。
  • Full-Speed のアイソクロナス エンドポイントにおいて、URB (USB Request Block) あたり 255 パケットという制限を超えるパケットを使用すると、次のエラー メッセージが表示されることがあります。
    USBD_STATUS_INVALID_PARAMETER
  • ドライバを作成する場合は、大きいサイズの転送を実行するときのパフォーマンスとリソースのバランス (トレードオフ) に注意する必要があります。
  • マイクロソフトでは、非常に大きいサイズのバルク転送やインタラプト (割り込み) 転送を行うことは推奨していません。これは、OHCI (Open Host Controller Interface) ドライバによる、リソースの制限があるためです。
  • コントロール転送のデフォルトのエンドポイントに対する要求は、以前のバージョンのドライバとの互換性を考慮して 4 KB に制限されています。USB の仕様では、その他のコントロール転送は 64 KB に制限されています。ただし、コントロール転送以外のエンドポイントについては、USB ドライバ スタックに特に制限はありません。コントロール転送以外のエンドポイントに対して 64 KB を超える転送を実行した場合の動作は定義されていません。
  • Windows 2000 における複合デバイスで、URB_FUNCTION_SELECT_CONFIGURATION 関数を使用して転送の最大サイズを設定すると、最大転送サイズは 4 KB に設定されます。この制限を回避するには、ドライバで URB_FUNCTION_SELECT_INTERFACE 関数を使用する必要があります。
    関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

    200977 USB 複合デバイスの MaximumTransferSize を設定できない

Windows XP および Windows Server 2003

次の表に示すのは、理論上の制限値です。実際的な制限値ではありません。


: マイクロソフトでは、非常に大きいサイズの転送を行うことは推奨していません。
転送の種類最大転送サイズ報告されるエラー
コントロール (エンドポイント 0)
4 KB
USBD_STATUS_INVALID_PARAMETER
コントロール (0 以外のエンドポイント)
64 KB
Bugcheck 0xFE
インタラプト (割り込み)
無制限
なし
UHCI バルク
無制限
なし
OHCI バルク
256 KBBugcheck 0xFE
EHCI バルク
3,344 KBBugcheck 0xFE
Full-Speed のアイソクロナス エンドポイントでは、URB あたり 255 パケットに制限されます。High-Speed のアイソクロナス エンドポイントでは、URB あたり 1,024 パケットに制限されます。これらの制限を超えるパケットを使用すると、次の USBD メッセージが表示されます。
USBD_STATUS_INVALID_PARAMETER
プロパティ

文書番号:832430 - 最終更新日: 2008/01/13 - リビジョン: 1

フィードバック