![]() |
libusb 1.0.24
USBデバイスにアクセスするためのクロス・プラットフォームのユーザー・ライブラリ
|
このページでは、USBデバイス入出力用のlibusbの同期(ブロッキング)APIについて説明します。このインターフェイスンは使いやすいですが、いくつかの制限があります。上級ユーザーは、代わりに 非同期入出力API の使用を検討することをお勧めします。 さらに…
関数 | |
int | libusb_control_transfer (libusb_device_handle *dev_handle, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout) |
int | libusb_bulk_transfer (libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout) |
int | libusb_interrupt_transfer (libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout) |
このページでは、USBデバイス入出力用のlibusbの同期(ブロッキング)APIについて説明します。このインターフェイスンは使いやすいですが、いくつかの制限があります。上級ユーザーは、代わりに 非同期入出力API の使用を検討することをお勧めします。
int libusb_control_transfer | ( | libusb_device_handle * | dev_handle, |
uint8_t | bmRequestType, | ||
uint8_t | bRequest, | ||
uint16_t | wValue, | ||
uint16_t | wIndex, | ||
unsigned char * | data, | ||
uint16_t | wLength, | ||
unsigned int | timeout | ||
) |
USB制御転送を実行します。
転送の方向は、セットアップ・パケットのbmRequestTypeフィールドから推測されます。
wValueとwIndexとwLengthフィールドの値は、ホスト・エンディアンのバイト順序で指定する必要があります。
dev_handle | デバイスが通信するためのハンドル |
bmRequestType | セットアップ・パケットの要求タイプ・フィールド |
bRequest | セットアップ・パケットの要求フィールド |
wValue | セットアップ・パケットの値フィールド |
wIndex | セットアップ・パケットのインデックス(index)フィールド |
data | 入力または出力のいずれかに適したサイズのデータ・バッファ(bmRequestType内の方向ビットに応じて) |
wLength | セットアップ・パケットの長さフィールド。データ・バッファは最低このサイズである必要があります。 |
timeout | 応答が受信できない間、この関数が諦めるまでに待機するタイムアウト(ミリ秒単位)。無期限のタイムアウトには、値0を使用します。 |
int libusb_bulk_transfer | ( | libusb_device_handle * | dev_handle, |
unsigned char | endpoint, | ||
unsigned char * | data, | ||
int | length, | ||
int * | transferred, | ||
unsigned int | timeout | ||
) |
USBバルク送を実行します。転送の方向は、エンドポイント・アドレスの方向ビットから推測されます。
バルクみ取りの場合、 length
フィールドは、受信する予定のデータの最大長を示します。予想よりも少ないデータが到着した場合、この関数はその実際のデータを返すため、
transfered
出力パラメーターを必ず確認してください。
バルク書き込みについては、transfered
パラメーターも確認する必要があります。すべてのデータが書き込まれているとは限りません
タイムアウト・エラー・コードを処理するときは、 transfered
も確認してください。
libusbは、基になるOSの要件を満たすために、転送をいくつかのチャンクに分割する必要がある場合があります。つまり、最初のいくつかのチャンクが完了した後にタイムアウトが期限切れになる場合があります。libusbは、転送された可能性のあるデータを失わないように注意しています。タイムアウト状態が入出力の完全な失敗を示していると想定しないでください。詳細については、
タイムアウト
を参照してください。
dev_handle | デバイスが通信するためのハンドル |
endpoint | 通信したい有効なエンドポイントのアドレス |
data | (エンドポイントに応じた)入力または出力のいずれかに適したサイズのデータ・バッファ |
length | バルク書き込みの場合、送信したいデータのバイト数。バルク読み取りの場合、データ・バッファに受信する最大バイト数。 |
transferred | 実際に転送されたバイト数の出力場所。バージョン 1.0.21 以降(LIBUSB_API_VERSION >= 0x01000105)、この情報を受け取りたくない場合はNULLポインタを渡すことができます。 |
timeout | 応答が受信できない間、この関数が諦めるまでに待機するタイムアウト(ミリ秒単位)。無期限のタイムアウトには、値0を使用します。 |
transferred
の示す場所に値が入力されています) transferred
の示す場所に値が入力されています) int libusb_interrupt_transfer | ( | libusb_device_handle * | dev_handle, |
unsigned char | endpoint, | ||
unsigned char * | data, | ||
int | length, | ||
int * | transferred, | ||
unsigned int | timeout | ||
) |
USB割り込み転送を実行します。転送の方向は、エンドポイント・アドレスの方向ビットから推測されます。
割り込み読み取りの場合、
length
フィールドは、受信する予定のデータの最大長を示します。予想よりも少ないデータが到着した場合、この関数はその実際のデータを返すため、
transfered
出力パラメーターを必ず確認してください。
割り込み書き込みについては、 transfered
パラメーターも確認する必要があります。すべてのデータが書き込まれている保証はありません。
タイムアウト・エラー・コードを処理するときは、 transfered
も確認してください。
libusbは、基になるOSの要件を満たすために、転送をいくつかのチャンクに分割する必要がある場合があります。つまり、最初のいくつかのチャンクが完了した後にタイムアウトが期限切れになる場合があります。libusbは、転送された可能性のあるデータを失わないように注意しています。タイムアウト状態が入出力の完全な失敗を示していると想定しないでください。詳細については、
タイムアウト
を参照してください。
デフォルトのエンドポイントのbInterval値がポーリング間隔として使用されます。
dev_handle | デバイスが通信するためのハンドル |
endpoint | 通信したい有効なエンドポイントのアドレス |
data | (エンドポイントに応じた)入力または出力のいずれかに適したサイズのデータ・バッファ |
length | バルク書き込みの場合、送信したいデータのバイト数。バルク読み取りの場合、データ・バッファに受信する最大バイト数。 |
transferred | 実際に転送されたバイト数の出力場所。バージョン 1.0.21 以降(LIBUSB_API_VERSION >= 0x01000105)、この情報を受け取りたくない場合はNULLポインタを渡すことができます。 |
timeout | 応答が受信できない間、この関数が諦めるまでに待機するタイムアウト(ミリ秒単位)。無期限のタイムアウトには、値0を使用します。 |
transferred
の示す場所に値が入力されています)