日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
LIBUSB(3) FreeBSD ライブラリ関数マニュアル LIBUSB(3)
名称
libusb -- USB アクセスライブラリ
ライブラリ
USB アクセスライブラリ (libusb, -lusb)
書式
#include <libusb.h>
解説
libusb ライブラリは、直接 usb デバイスを管理するためのインタフェースを含
んでいます。現在の実装は、libusb API の v1.0 をサポートしています。
ライブラリ初期化と非初期化
const struct libusb_version * libusb_get_version(void) この関数は、LibUSB
に関するバージョン情報を返します。
int libusb_init(libusb_context **ctx) この関数は、libusb を初期化します。
他の libusb ルーチンが使用される前に、プログラムの最初に呼び出されなけれ
ばなりません。この関数は、成功すれば、0 を返し、失敗すれば LIBUSB_ERROR
を返します。
void libusb_exit(libusb_context *ctx) libusb を非初期化します。アプリケー
ションの終わりに呼び出されなければなりません。他の libusb ルーチンは、こ
の関数の後に呼び出されません。
int libusb_has_capability(uint32_t capability) この関数は、libusb の実行
時のケーパビリティをチェックします。この関数は、与えられた capability
(ケーパビリティ) がサポートされているなら、0 以外を返し、サポートされてい
ないなら、0 を返します。capability (ケーパビリティ) のための有効な値は、
次の通りです:
LIBUSB_CAP_HAS_CAPABILITY
libusb は、libusb_has_capability() をサポートしていま
す。
LIBUSB_CAP_HAS_HOTPLUG
libusb は、hotplug 通知をサポートします。
LIBUSB_CAP_HAS_HID_ACCESS
libusb は、ユーザ介入を必要とせずに HID デバイスにアク
セスすることができます。
LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER
libusb は、libusb_detach_kernel_driver() でデフォルトの
USB ドライバのデタッチをサポートしています。
const char * libusb_strerror(int code) code 引数によって与えられるエラー
の ASCII 表現を取得します。この関数は、NULL を返しません。
const char * libusb_error_name(int code) code 引数によって与えられるエ
ラー列挙型の ASCII 表現を取得します。この関数は、NULL を返しません。
void libusb_set_debug(libusb_context *ctx, int level) デバッグレベルを
level に設定します。
ssize_t libusb_get_device_list(libusb_context *ctx, libusb_device
***list) 利用可能な usb デバイスのリストで list を追加し、リスト中の各デ
バイスへの参照を追加します。この関数によって作成されたすべてのリストのエ
ントリは、利用者がそれらで終了したとき、それらの参照カウンタを減少しせな
ければなりません、そして、リスト自体は、解放されなければなりません。この
関数は、リストのデバイスの数、または LIBUSB_ERROR コードを返します。
void libusb_free_device_list(libusb_device **list, int unref_devices)
libusb_get_device_list によって発見されたデバイスのリストを解放します。
unref_device が 1 に設定されているなら、リスト中のすべてのデバイスは、そ
れらの参照カウンタを一度だけ減少された状態にします。
uint8_t libusb_get_bus_number(libusb_device *dev) デバイス dev によって含
まれるバスの数を返します。
uint8_t libusb_get_port_number(libusb_device *dev) dev によって与えられた
デバイスがアタッチされるポート番号を返します。
int libusb_get_port_numbers(libusb_device *dev, uint8_t *buf, uint8_t
bufsize) デバイス dev のためのルートからのすべてのポート番号のリストを、
サイズ bufsize のバッファ buf に格納します。
int libusb_get_port_path(libusb_context *ctx, libusb_device *dev, uint8_t
*buf, uint8_t bufsize) libusb_get_port_numbers と同等の推奨されない関数。
uint8_t libusb_get_device_address(libusb_device *dev) デバイス dev によっ
て含まれた device_address を返します。
enum libusb_speed libusb_get_device_speed(libusb_device *dev) デバイスが
接続されている有線の速度を返します。詳しい情報については、
LIBUSB_SPEED_XXX enums を参照してください。未知の有線の速度の場合に、
LIBUSB_SPEED_UNKNOWN が返されます。
int libusb_get_max_packet_size(libusb_device *dev, unsigned char
endpoint) 成功すれば、wMaxPacketSize 値を返し、終点が存在しないなら、
LIBUSB_ERROR_NOT_FOUND を返し、他の失敗では、LIBUSB_ERROR_OTHERS を返しま
す。
int libusb_get_max_iso_packet_size(libusb_device *dev, unsigned char
endpoint) 成功すれば、パケット乗数を掛けたパケットサイズを返し、終点が存
在しないなら、LIBUSB_ERROR_NOT_FOUND を返し、他の失敗では、
LIBUSB_ERROR_OTHERS を返します。
libusb_device * libusb_ref_device(libusb_device *dev) デバイス dev の参照
カウンタを増加します。
void libusb_unref_device(libusb_device *dev) デバイス dev の参照カウンタ
を減少します。
int libusb_open(libusb_device *dev, libusb_device_handle **devh) デバイス
をオープンし、device_handle を所得します。成功すれば、0 を、メモリ割り付
け問題で LIBUSB_ERROR_NO_MEM を、パーミッションの問題で
LIBUSB_ERROR_ACCESS を、デバイス切断されているなら、
LIBUSB_ERROR_NO_DEVICE を、そして、他のエラーのときに LIBUSB_ERROR コード
を返します。
libusb_device_handle * libusb_open_device_with_vid_pid(libusb_context
*ctx, uint16_t vid, uint16_t pid) ベンダとプロダクト ID vid と pid によっ
てデバイスをオープンするための便利関数。エラーのときに NULL を返します。
void libusb_close(libusb_device_handle *devh) デバイスハンドルをクローズ
します。
libusb_device * libusb_get_device(libusb_device_handle *devh) devh に含ま
れるデバイスを取得する。エラーのときに NULL を返します。
int libusb_get_configuration(libusb_device_handle *devh, int *config) 現
在の設定の値を返します。成功すれば、0 を、デバイス切断されているなら、
LIBUSB_ERROR_NO_DEVICE を、エラーのときに、LIBUSB_ERROR コードを返しま
す。
int libusb_set_configuration(libusb_device_handle *devh, int config) devh
に含まれるデバイスのための config にアクティブな設定を設定します。この関
数は、成功すれば、0 を、要求された設定が存在していなければ、
LIBUSB_ERROR_NOT_FOUND を、インタフェースが現在要求されているなら、
LIBUSB_ERROR_BUSY を、デバイスが切断されているなら、
LIBUSB_ERROR_NO_DEVICE を、失敗すれば、LIBUSB_ERROR コードを返します。
int libusb_claim_interface(libusb_device_handle *devh, int
interface_number) 与えられた libusb_handle devh のインタフェースを要求し
ます。これは、非ブロッキング関数です。成功すれば、0 を、要求されたインタ
フェースが存在していないなら、LIBUSB_ERROR_NOT_FOUND を、プログラムまたは
ドライバがインタフェースを要求するなら、LIBUSB_ERROR_BUSY を、デバイスが
切断されているなら、LIBUSB_ERROR_NO_DEVICE を、失敗すれば、LIBUSB_ERROR
コードを返します。
int libusb_release_interface(libusb_device_handle *devh, int
interface_number) この関数は、インタフェースを解放します。デバイスで要求
されたすべてのインタフェースは、デバイスをクローズする前に、解放されけれ
ばなりません。成功すれば、0 を、インタフェースが要求されないなら、
LIBUSB_ERROR_NOT_FOUND を、デバイスが切断されているなら、
LIBUSB_ERROR_NO_DEVICE を、失敗すれば、LIBUSB_ERROR コードを返します。
int libusb_set_interface_alt_setting(libusb_device_handle *dev, int
interface_number, int alternate_setting) インタフェースのため代替の設定を
アクティブにします。成功すれば、0 を、インタフェースが要求されないか、ま
たは要求された設定が存在しないなら、LIBUSB_ERROR_NOT_FOUND を、デバイスが
切断されているなら、LIBUSB_ERROR_NO_DEVICE を、失敗すれば、LIBUSB_ERROR
コードを返します。
int libusb_clear_halt(libusb_device_handle *devh, unsigned char endpoint)
終点のための halt/stall をクリアする。成功すれば、0 を、終点が存在しない
なら、LIBUSB_ERROR_NOT_FOUND を、デバイスが切断されているなら、
LIBUSB_ERROR_NO_DEVICE を、失敗すれば、LIBUSB_ERROR コードを返します。
int libusb_reset_device(libusb_device_handle *devh) usb デバイスのための
USB ポートリセットを実行します。成功すれば、0 を、再列挙が要求されるか、
または、デバイスが切断されているなら、LIBUSB_ERROR_NOT_FOUND を、失敗すれ
ば、LIBUSB_ERROR コードを返します。
int libusb_check_connected(libusb_device_handle *devh) USB デバイスがまだ
接続されているかどうかテストします。成功すれば、0 を、切断されているな
ら、LIBUSB_ERROR_NO_DEVICE を、そして失敗すれば、LIBUSB_ERROR コードを返
します。
int libusb_kernel_driver_active(libusb_device_handle *devh, int
interface) ドライバがインタフェースでアクティブであるかどうか決定する。
カーネルドライバがアクティブでないなら、0 を、カーネルドライバがアクティ
ブであるなら、1 を、デバイスが切断されているなら、LIBUSB_ERROR_NO_DEVICE
を、失敗すれば、LIBUSB_ERROR コードを返します。
int libusb_get_driver(libusb_device_handle *devh, int interface, char
*name, int namelen) または int libusb_get_driver_np(libusb_device_handle
*devh, int interface, char *name, int namelen) 与えられた device と
interface にアタッチされたドライバの名前を長さ namelen のバッファ name に
コピーします。成功すれば、0 を、カーネルドライバが与えられたインタフェー
スにアタッチされていないなら、LIBUSB_ERROR_NOT_FOUND を、そしてインタ
フェースが存在していないなら、LIBUSB_ERROR_INVALID_PARAM を返します。この
関数は、移植性がありません。name によって指されたバッファは、成功して終了
したときのみ 0 です。
int libusb_detach_kernel_driver(libusb_device_handle *devh, int
interface) または int libusb_detach_kernel_driver_np(libusb_device_handle
*devh, int interface) インタフェースからカーネルドライバをデタッチしま
す。これは、カーネルドライバによって既に必要とされるインタフェースを要求
するために必要です。成功すれば、0 を、カーネルドライバがアクティブでな
かったなら、LIBUSB_ERROR_NOT_FOUND を、インタフェースが存在していないな
ら、LIBUSB_ERROR_INVALID_PARAM を、デバイスが接続されていなかったなら、
LIBUSB_ERROR_NO_DEVICE を、そして失敗すれば、LIBUSB_ERROR コードを返しま
す。この関数は、移植性がありません。
int libusb_attach_kernel_driver(libusb_device_handle *devh, int
interface) 以前にデタッチされたインタフェースカーネルドライバを再アタッチ
します。成功すれば、0 を、インタフェースが存在していないなら、
LIBUSB_ERROR_INVALID_PARAM を、デバイスが切断されているなら、
LIBUSB_ERROR_NO_DEVICE を、インタフェースがプログラムまたはドライバによっ
て要求されるので、ドライバをアタッチできないなら、LIBUSB_ERROR_BUSY を、
失敗すれば、LIBUSB_ERROR コードを返します。
int libusb_set_auto_detach_kernel_driver(libusb_device_handle *devh, int
enable) この関数は、インタフェースが要求されるとき、デタッチされた自動的
なカーネルインタフェースドライバを有効にします。インタフェースが復元され
るとき、カーネルドライバを、再アタッチされることを許可します。enable 引数
が 0 でないなら、機能は、有効にされます。そうでなければ、無効にされます。
成功すれば、0 を返し、失敗すれば、LIBUSB_ERROR コードを返します。
USB 記述子
int libusb_get_device_descriptor(libusb_device *dev,
libusb_device_descriptor *desc) デバイス dev のための USB デバイス記述子
を取得する。これは、非ブロッキング関数です。成功すれば、0 を、失敗すれ
ば、LIBUSB_ERROR コードを返します。
int libusb_get_active_config_descriptor(libusb_device *dev, struct
libusb_config_descriptor **config) アクティブな設定のための USB 設定記述
子を取得する。成功すれば、0 を、デバイスが設定されない状態であるなら、
LIBUSB_ERROR_NOT_FOUND を、エラーのときに LIBUSB_ERROR コードを返します。
int libusb_get_config_descriptor(libusb_device *dev, uint8_t
config_index, libusb_config_descriptor **config) インデックス idx に基づ
く USB 設定記述子を取得する。成功すれば、0 を、設定が存在していないなら、
LIBUSB_ERROR_NOT_FOUND を、エラーのときに LIBUSB_ERROR コードを返します。
int libusb_get_config_descriptor_by_value(libusb_device *dev, uint8
bConfigurationValue, libusb_config_descriptor **config) 特有の bConfigu
rationValue で USB 設定記述子を取得する。これは、デバイスを通して要求を送
信しない非ブロッキング関数です。成功すれば、0 を、設定が存在していないな
ら、LIBUSB_ERROR_NOT_FOUND を、失敗すれば、LIBUSB_ERROR コードを返しま
す。
void libusb_free_config_descriptor(libusb_config_descriptor *config) 設定
記述子を解放する。
int libusb_get_string_descriptor(libusb_device_handle *devh, uint8_t
desc_idx, uint16_t langid, unsigned char *data, int length) 生の形式での
文字列の記述子を検索します。成功すれば、実際に転送されたバイトの数を返
し、失敗すれば、負の LIBUSB_ERROR コードの返します。
int libusb_get_string_descriptor_ascii(libusb_device_handle *devh,
uint8_t desc_idx, unsigned char *data, int length) C スタイル ASCII の文
字列記述子を検索する。成功すれば、結果の ASCII 文字列に正のバイトの数を返
し、失敗すれば、LIBUSB_ERROR コードを返します。
int libusb_parse_ss_endpoint_comp(const void *buf, int len,
libusb_ss_endpoint_companion_descriptor **ep_comp) この関数は、buf によっ
て指され、len の長さがある、ホストのエンディアンの形式で USB 3.0 終点コン
パニオン記述子を解析します。一般的に、これらの引数は、終点記述子の extra
と extra_length のフィールドです。成功すれば、結果の記述子へのポインタ
は、ep_comp によって与えられる場所に格納されます。成功すれば、0 を返し、
失敗すれば、LIBUSB_ERROR コードを返します。成功すれば、解析された USB 3.0
終点コンパニオン記述子は、libusb_free_ss_endpoint_comp 関数を使用して解放
されなければなりません。
void libusb_free_ss_endpoint_comp(libusb_ss_endpoint_companion_descriptor
*ep_comp) この関数は、NULL セーフであり、ep_comp によって与えられる解析さ
れた USB 3.0 終点コンパニオン記述子を解放します。
int libusb_get_ss_endpoint_companion_descriptor(struct libusb_context
*ctx, const struct libusb_endpoint_descriptor *endpoint, struct
libusb_ss_endpoint_companion_descriptor **ep_comp) この関数は、endpoint
(終点) によって与えられた USB 3.0 終点コンパニオン記述子を見つけて、解析
します。成功すれば、0 を返し、失敗すれば、LIBUSB_ERROR コードを返します。
成功すれば、解析された USB 3.0 終点コンパニオン記述子は、
libusb_free_ss_endpoint_companion_descriptor 関数を使用して解放されなけれ
ばなりません。
void libusb_free_ss_endpoint_companion_descriptor(struct
libusb_ss_endpoint_companion_descriptor *ep_comp) この関数は、NULL セーフ
であり、ep_comp によって与えられる解析された USB 3.0 終点コンパニオン記述
子を解放します。
int libusb_get_bos_descriptor(libusb_device_handle *handle, struct
libusb_bos_descriptor **bos) この関数は、handle によって与えられた USB デ
バイスを問い合わせ、解析された BOS 記述子へのポインタを bos に格納しま
す。成功すれば、0 を返し、失敗すれば、LIBUSB_ERROR コードを返します。成功
すれば、解析された BOS 記述子は、libusb_free_bos_descriptor 関数を使用し
て解放されなければなりません。
int libusb_parse_bos_descriptor(const void *buf, int len,
libusb_bos_descriptor **bos) この関数は、バイナリオブジェクトストア
(Binary Object Store)、BOS を buf によって指され、len の長さがある、ホス
トのエンディアンの形式に解析します。成功すれば、結果の記述子へのポインタ
は、bos によって与えられる場所に格納されます。成功すれば、0 を返し、失敗
すれば、LIBUSB_ERROR コードを返します。成功すれば、解析された BOS 記述子
は、libusb_free_bos_descriptor 関数を使用して解放されなければなりません。
void libusb_free_bos_descriptor(libusb_bos_descriptor *bos) この関数は、
NULL セーフであり、bos によって与えられる解析された BOS 記述子を解放しま
す。
int libusb_get_usb_2_0_extension_descriptor(struct libusb_context *ctx,
struct libusb_bos_dev_capability_descriptor *dev_cap, struct
libusb_usb_2_0_extension_descriptor **usb_2_0_extension) この関数は、
dev_cap によって与えられる記述子から USB 2.0 拡張記述子を解析し、解析され
た記述子へのポインタを usb_2_0_extension に格納します。成功すれば、0 を返
し、失敗すれば、LIBUSB_ERROR コードを返します。成功すれば、解析された USB
2.0 拡張記述子は、libusb_free_usb_2_0_extension_descriptor 関数を使用して
解放されなければなりません。
void libusb_free_usb_2_0_extension_descriptor(struct
libusb_usb_2_0_extension_descriptor *usb_2_0_extension) この関数は、NULL
セーフであり、usb_2_0_extension によって与えられる解析された USB 2.0 拡張
記述子を解放します。
int libusb_get_ss_usb_device_capability_descriptor(struct libusb_context
*ctx, struct libusb_bos_dev_capability_descriptor *dev_cap, struct
libusb_ss_usb_device_capability_descriptor **ss_usb_device_capability) こ
の関数は、dev_cap によって与えられた記述子から SuperSpeed デバイスケーパ
ビリティ記述子を解析し、解析された記述子へのポインタを
ss_usb_device_capability に格納します。成功すれば、0 を返し、失敗すれば、
LIBUSB_ERROR コードを返します。成功すれば、解析される SuperSpeed デバイス
ケーパビリティ記述子は、libusb_free_ss_usb_device_capability_descriptor
関数を使用して解放されなければなりません。
void libusb_free_ss_usb_device_capability_descriptor(struct
libusb_ss_usb_device_capability_descriptor *ss_usb_device_capability) こ
の関数は、NULL セーフであり、ss_usb_device_capability によって与えられる
解析された SuperSpeed デバイスケーパビリティ記述子を解放します。
int libusb_get_container_id_descriptor(struct libusb_context *ctx, struct
libusb_bos_dev_capability_descriptor *dev_cap, struct
libusb_container_id_descriptor **container_id) この関数は、dev_cap によっ
て与えられた記述子からコンテナ ID 記述子を解析し、解析された記述子へのポ
インタを container_id に格納します。成功すれば、0 を返し、失敗すれば、
LIBUSB_ERROR コードを返します。成功すれば、解析されたコンテナ ID 記述子
は、libusb_free_container_id_descriptor function 関数を使用して解放されな
ければなりません。
void libusb_free_container_id_descriptor(struct
libusb_container_id_descriptor *container_id) この関数は、NULL セーフであ
り、container_id によって与えられる解析されたコンテナ ID 記述子を解放しま
す。
USB 非同期 I/O
struct libusb_transfer * libusb_alloc_transfer(int iso_packets)
iso_packets によって指定されるアイソクロナス (isochronous) パケット記述子
に比例して転送を割り付けます。エラーのときに NULL を返します。
void libusb_free_transfer(struct libusb_transfer *tr) 転送を解放します。
int libusb_submit_transfer(struct libusb_transfer *tr) この関数は、転送を
提出して、直ちに、返ります。成功すれば、0 を、デバイスが切断されているな
ら、LIBUSB_ERROR_NO_DEVICE を、他の失敗のときに、LIBUSB_ERROR コードを返
します。
int libusb_cancel_transfer(struct libusb_transfer *tr) この機関数は、転送
を非同期にキャンセルします。成功すれば、0 を、失敗すれば、LIBUSB_ERROR
コードを返します。
USB 同期 I/O
int libusb_control_transfer(libusb_device_handle *devh, uint8_t
bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex,
unsigned char *data, uint16_t wLength, unsigned int timeout) USB 制御転送
を実行する。0 から wLength までの範囲で、成功すれば、実際に転送されたバイ
ト数を返します。エラー時には、libusb エラーコードが返されます、例えば、転
送タイムアウトしたなら、LIBUSB_ERROR_TIMEOUT を、制御要求がサポートされて
いないなら、LIBUSB_ERROR_PIPE を、デバイスが切断されているなら、
LIBUSB_ERROR_NO_DEVICE を、または、他の失敗のときに、別の LIBUSB_ERROR
コードを返します。LIBUSB_ERROR コードは、すべて負です。
int libusb_bulk_transfer(struct libusb_device_handle *devh, unsigned char
endpoint, unsigned char *data, int length, int *transferred, unsigned int
timeout) USB バルク転送を実行する。0 のタイムアウト値は、タイムアウトを意
味しません。タイムアウト値は、ミリ秒単位で与えられます。成功すれば、0
を、転送タイムアウトであるなら、LIBUSB_ERROR_TIMEOUT を、制御要求がサポー
トされていないなら、LIBUSB_ERROR_PIPE をデバイスがより多くのデータを提供
するなら、LIBUSB_ERROR_OVERFLOW をデバイスが切断されているなら、
LIBUSB_ERROR_NO_DEVICE を、他の失敗のときに、LIBUSB_ERROR コードを返しま
す。
int libusb_interrupt_transfer(struct libusb_device_handle *devh, unsigned
char endpoint, unsigned char *data, int length, int *transferred,
unsigned int timeout) USB 割り込み転送を実行する。0 のタイムアウト値は、
タイムアウトを意味しません。タイムアウト値は、ミリ秒単位で与えられます。
成功すれば、0 を、転送タイムアウトであるなら、LIBUSB_ERROR_TIMEOUT を、制
御要求がサポートされていないなら、LIBUSB_ERROR_PIPE をデバイスがより多く
のデータを提供するなら、LIBUSB_ERROR_OVERFLOW をデバイスが切断されている
なら、LIBUSB_ERROR_NO_DEVICE を、他の失敗のときに、LIBUSB_ERROR コードを
返します。
USB ストリームのサポート
int libusb_alloc_streams(libusb_device_handle *dev, uint32_t num_streams,
unsigned char *endpoints, int num_endpoints) この関数は、終点の与えられた
数値を使用しているストリームの与えられた数が許可され、いわゆる USB スト
リームを使用するために必要なリソースを割り付けることを確認します。現在、
終点ごとに単一のストリームだけが、LibUSB の内部を簡素化するために、サポー
トされます。この関数は、成功すれば、0 を返し、失敗すれば、LIBUSB_ERROR
コードを返します。
int libusb_free_streams(libusb_device_handle *dev, unsigned char
*endpoints, int num_endpoints) この関数は、ストリームの使用法のために必要
とされるリソースを解放します。成功すれば、0 を返し、失敗すれば、
LIBUSB_ERROR コードを返します。
void libusb_transfer_set_stream_id(struct libusb_transfer *transfer,
uint32_t stream_id) この関数は、与えられた USB 転送のためのストリーム ID
を設定します。
uint32_t libusb_transfer_get_stream_id(struct libusb_transfer *transfer)
この関数は、与えられた USB 転送のためのストリーム ID を返します。ストリー
ム ID が使用されないなら、0 の値が、返されます。
USB イベント
int libusb_try_lock_events(libusb_context *ctx) イベント取り扱いロックを
獲得するように試みる。ロックが取得されたなら、0 を返し、そうでなければ、1
を返します。
void libusb_lock_events(libusb_context *ctx) イベント取り扱いロックを獲得
する。この関数は、ブロッキングです。
void libusb_unlock_events(libusb_context *ctx) イベント取り扱いロックを解
放する。これは、libusb_wait_for_event() でブロックされた任意のスレッドを
起こします。
int libusb_event_handling_ok(libusb_context *ctx) イベント取り扱いを行う
ためにこのスレッドに対してまだ OK かどうか判断する。イベント取り扱いが始
まるか、または続くことができるなら、1 を返します。このスレッドがイベント
ロックをあきらめなければならないなら、0 を返します。
int libusb_event_handler_active(libusb_context *ctx) アクティブなスレッド
がイベントを取り扱っているかどうか判断します。スレッド処理イベントがある
から、1 を、現在処理イベントがなければ、0 を返します。
void libusb_lock_event_waiters(libusb_context *ctx) event_waiters ロック
を獲得する。このロックは、イベントが終了しているとき、利用者が承知したい
状況で取得されるように設計されていますが、ある他のスレッドは、イベント処
理であるので、libusb_handle_events() の呼び出しは、許可されていません。
void libusb_unlock_event_waiters(libusb_context *ctx) event_waiters ロッ
クを解放する。
int libusb_wait_for_event(libusb_context *ctx, struct timeval *tv) イベン
トの終了のシグナルを発生するために別のスレッドを待ちます。イベントウェー
タ (waiter) ロックを保持して呼び出されなければなりません、
libusb_lock_event_waiters() を参照。これは、タイムアウトの期限が切れる
か、転送が完了するか、スレッドが、libusb_unlock_events() を通してイベント
取り扱いロックを解放するまで、ブロックします。転送が完了するか、または別
のスレッドがイベント取り扱い停止した後、0 を返し、タイムアウトの期限が切
れたなら、1 を返します。
int libusb_handle_events_timeout_completed(libusb_context *ctx, struct
timeval *tv, int *completed) タイムアウトが終了したかどうかをチェックする
ことによって、そして活性化しているファイル記述子の設定をチェックすること
によって、あらゆる保留中のイベントを扱います。completed 引数が NULL に等
しいなら、この関数は、転送完了のコールバックが 0 以外にされた completed
引数によって指される変数を設定するまで、ループします。tv 引数が NULL に等
しいなら、この関数は、与えられたタイムアウトの後に、LIBUSB_ERROR_TIMEOUT
を返します。成功すれば、0 を返し、失敗するか、またはタイムアウトすれば、
LIBUSB_ERROR を返します。
int libusb_handle_events_completed(libusb_context *ctx, int *completed)
活性化しているファイル記述子の設定をチェックすることによって、あらゆる保
留中のイベントを扱います。completed 引数が NULL に等しいなら、この関数
は、転送完了のコールバックが 0 以外にされた completed 引数によって指され
る変数を設定するまで、ループします。成功すれば、0 を返し、失敗すれば、
LIBUSB_ERROR を返します。
int libusb_handle_events_timeout(libusb_context *ctx, struct timeval *tv)
タイムアウトの期限が切れたかどうかチェックし、活性のためにファイル記述子
のセットをチェックすることによって、任意の保留中 (pending) のイベントを取
り扱います。成功すれば、0 を返し、失敗するか、またはタイムアウトすれば、
LIBUSB_ERROR コードを返します。
int libusb_handle_events(libusb_context *ctx) センシブル (sensible) タイ
ムアウトでブロッキングモードの保留中のイベントを取り扱います。成功すれ
ば、0 を返し、失敗すれば、LIBUSB_ERROR コードを返します。
int libusb_handle_events_locked(libusb_context *ctx, struct timeval *tv)
別のスレッドが既にそれを行っているかどうかチェックすることなしに、ファイ
ル記述子をポーリングすることによって保留中のイベントを取り扱います。イベ
ントロックが保持されている状態で、呼び出されなければなりません。
int libusb_get_next_timeout(libusb_context *ctx, struct timeval *tv)
libusb が取り扱う必要がある次の内部のタイムアウトを決定します。保留中のタ
イムアウトがなければ、0 を、タイムアウトが返されたなら、1 を、失敗する
か、またはタイムアウトすれば、LIBUSB_ERROR コードを返します。
void libusb_set_pollfd_notifiers(libusb_context *ctx,
libusb_pollfd_added_cb added_cb, libusb_pollfd_removed_cb remove_cb, void
*user_data) ファイル記述子追加/削除のための通知関数を登録します。これらの
関数は、libusb がイベントソースとして使用しているすべての新しいか、または
削除されるファイル記述子のために呼び出されます。
const struct libusb_pollfd ** libusb_get_pollfds(libusb_context *ctx)
libusb イベントソースとして、利用者のメインループによって、ポーリングされ
るべき、ファイル記述子のリストを検索します。成功すれば、NULL で終了するリ
ストを返し、失敗すれば、NULL を返します。
int libusb_hotplug_register_callback(libusb_context *ctx,
libusb_hotplug_event events, libusb_hotplug_flag flags, int vendor_id,
int product_id, int dev_class, libusb_hotplug_callback_fn cb_fn, void
*user_data, libusb_hotplug_callback_handle *handle) この関数は、hotplug
フィルタを登録します。events 引数は、どのイベントが hotplug フィルタのト
リガを行うかを選択します。利用可能なイベント値は、LIBUSB_HOT
PLUG_EVENT_DEVICE_ARRIVED と LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT です。1 つ
以上のイベントが指定されなければなりません。vendor_id, product_id と
dev_class 引数は、USB デバイス記述子のあらゆる値と一致するように
LIBUSB_HOTPLUG_MATCH_ANY に設定することができます。そうでなければ、指定さ
れた値は、照合のために使用されます。flags 引数が LIBUSB_HOTPLUG_ENUMERATE
に設定されるなら、すべての現在アタッチされ、一致している USB デバイスは、
cb_fn 引数によって与えられた hotplug フィルタに渡されます。そうでなけれ
ば、flags 引数は、LIBUSB_HOTPLUG_NO_FLAGS に設定されるべきです。この関数
は、成功すれば、0 を返し、失敗すれば、LIBUSB_ERROR コードを返します。
int libusb_hotplug_callback_fn(libusb_context *ctx, libusb_device
*device, libusb_hotplug_event event, void *user_data) hotplug フィルタ関
数。この関数が 0 以外を返すなら、フィルタは、削除されます。そうでなけれ
ば、フィルタは、保持され、より多くのイベントを受け取ることができます。
user_data 引数は、フィルタが登録されたとき、与えられたものと同じです。
event 引数は、LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED または LIBUSB_HOT
PLUG_EVENT_DEVICE_LEFT のいずれかを指定することができます。
void libusb_hotplug_deregister_callback(libusb_context *ctx,
libusb_hotplug_callback_handle handle) この関数は、hotplug フィルタの登録
を解除します。
LIBUSB バージョン 0.1 互換性
また、ライブラリは、LibUSB バージョン 0.1.12 に準拠しています。
usb_open() usb_close() usb_get_string() usb_get_string_simple()
usb_get_descriptor_by_endpoint() usb_get_descriptor()
usb_parse_descriptor() usb_parse_configuration()
usb_destroy_configuration() usb_fetch_and_parse_descriptors()
usb_bulk_write() usb_bulk_read() usb_interrupt_write()
usb_interrupt_read() usb_control_msg() usb_set_configuration()
usb_claim_interface() usb_release_interface() usb_set_altinterface()
usb_resetep() usb_clear_halt() usb_reset() usb_strerror() usb_init()
usb_set_debug() usb_find_busses() usb_find_devices() usb_device()
usb_get_busses() usb_check_connected() usb_get_driver_np()
usb_detach_kernel_driver_np()
関連項目
libusb20(3), usb(4), usbconfig(8), usbdump(8)
https://libusb.info/
歴史
libusb サポートは、FreeBSD 8.0 ではじめて登場しました。
FreeBSD 13.2 October, 2, 2022 FreeBSD 13.2