|
|
 |
| Doc ID: |
107 |
| 製品: |
WinDriver & KernelDriver |
| Version: |
5.04 - 5.22 |
WD_UsbTransfer() 関数を使って、データ転送をする際に、USB_SHORT_TRANSFER および USB_FULL_TRANSFER フラグをどのように使用しますか? (V5.04 - 5.22) |
上記のフラグは、WinDriver のバージョン 5.04 から利用可能です。
USB_SHORT_TRANSFER フラグを設定する場合、WD_UsbTransfer() 関数は以下の1つ以上の結果を返します:
- 短い転送を示すために、短いパケット (たとえば、最大パケット サイズより小さい場合) を転送、またはデバイスが 0 パケットを転送した場合、fOk は TRUE となります。
- 短いパケットを転送する (または 0 パケットを受信する) 前に、タイムアウト (usbTrans.dwTimeout に指定) となった場合、fOk は FALSE となります。
USB_FULL_TRANSFER フラグを設定する場合、WD_UsbTransfer() 関数は以下の1つ以上の結果を返します:
- バッファ全体 (usbTrans.dwBytes) を filled/written (満たす) 場合、fOk は TRUE となります。
- バッファ全体を filled/written (満たす) 前に、タイムアウトとなった場合、fOk は FALSE となります (転送が成功する場合もあります)。
デフォルトでは、bulk および interrupt 転送用に USB_SHORT_TRANSFER フラグを設定し、isochronous 転送用に USB_FULL_TRANSFER フラグを設定します。Control 転送は常に short 転送です。
以前の WinDriver のバージョン (v5.03 以前) では、WD_UsbTransfer() 関数は、v5.04 およびそれ以降の USB_SHORT_TRANSFER フラグの上記の説明のように、動作していました (すべての転送タイプで)。その関数は常に以下の1つ以上の結果を返します:
- 短い転送を示すために、短いパケット (たとえば、最大パケット サイズより小さい場合) を転送、またはデバイスが 0 パケットを転送した場合、fOk は TRUE となります (たとえ、バッファ全体が filled/written (満たす) されなくても)。
- そのような転送なしで、タイムアウトとなった場合、fOK は FALSE となります。
|
|
|