次の方法で共有


USB の短いパケット

USB は、USB パケットの形式で、有線経由でデータを渡しますが、NDIS またはネットワーク パケットと混同しないでください。 USB エンドポイントの送受信のUSB パケットの最大長は、エンドポイントの記述子の wMaxPacketSize フィールドの値に制限されます。 バルク パイプの場合、最大パケット サイズは 64 バイトです。 特定の USB ホスト コントローラーの制約により、短い USB パケット (たとえば、データのストリーミング時に 64 バイト未満のパケット) の使用と関連しペナルティが発生します。

この制限に対処するために、リモート NDIS USB デバイスは、短いパケットが発生しないように (REMOTE_NDIS_INITIALIZE_MSGMaxTransferSize フィールドの制約内で) データ メッセージに 0 バイトのパディングを追加できます。 最終的な REMOTE_NDIS_PACKET_MSGMessageLength フィールドには、これらの追加されたパディング バイトは含まれません。

デバイスが最後に使用可能な REMOTE_NDIS_PACKET_MSG を送信した場合 (そのため、デバイスのキューにはそれ以上残っていない場合)、短い USB パケットを送信できます。

デバイス送信リモート NDIS データ メッセージの最後の REMOTE_NDIS_PACKET_MSG (0 バイトのパディングなし) が、そのエンドポイントの wMaxPacketSize と全く同じ長さの USB パケットで終わる場合、デバイスは転送の追加部分として追加の 1 バイト 0 パケットを送信する場合があります。 一部のデバイス実装は、この許容量によって簡略化されています。

同様に、一部のデバイス側 USB チップセットは、そのエンドポイントの wMaxPacketSize と同じ長さの USB パケットで終わる受信 USB 転送の終了を検出しません。 このため、ホストはデータ転送に 1 バイト 0 パケットを追加する必要があります。それ以外の場合は、受信側エンドポイントの wMaxPacketSize の倍数の長さになります。 USB リモート NDIS デバイスは、追加されたバイトを許容する必要があります。 最後の REMOTE_NDIS_PACKET_MSG の MessageLength フィールドには、この追加バイトは含まれません。