libusb  1.0.24
USBデバイスにアクセスするためのクロス・プラットフォームのユーザー・ライブラリ
マクロ | 列挙型 | 関数 | 変数
その他

マクロ

#define LIBUSB_CALL
 
#define LIBUSB_API_VERSION   0x01000108
 
#define libusb_le16_to_cpu   libusb_cpu_to_le16
 

列挙型

enum  libusb_standard_request {
  LIBUSB_REQUEST_GET_STATUS = 0x00, LIBUSB_REQUEST_CLEAR_FEATURE = 0x01, LIBUSB_REQUEST_SET_FEATURE = 0x03, LIBUSB_REQUEST_SET_ADDRESS = 0x05,
  LIBUSB_REQUEST_GET_DESCRIPTOR = 0x06, LIBUSB_REQUEST_SET_DESCRIPTOR = 0x07, LIBUSB_REQUEST_GET_CONFIGURATION = 0x08, LIBUSB_REQUEST_SET_CONFIGURATION = 0x09,
  LIBUSB_REQUEST_GET_INTERFACE = 0x0a, LIBUSB_REQUEST_SET_INTERFACE = 0x0b, LIBUSB_REQUEST_SYNCH_FRAME = 0x0c, LIBUSB_REQUEST_SET_SEL = 0x30,
  LIBUSB_SET_ISOCH_DELAY = 0x31
}
 
enum  libusb_request_type { LIBUSB_REQUEST_TYPE_STANDARD = (0x00 << 5), LIBUSB_REQUEST_TYPE_CLASS = (0x01 << 5), LIBUSB_REQUEST_TYPE_VENDOR = (0x02 << 5), LIBUSB_REQUEST_TYPE_RESERVED = (0x03 << 5) }
 
enum  libusb_request_recipient { LIBUSB_RECIPIENT_DEVICE = 0x00, LIBUSB_RECIPIENT_INTERFACE = 0x01, LIBUSB_RECIPIENT_ENDPOINT = 0x02, LIBUSB_RECIPIENT_OTHER = 0x03 }
 
enum  libusb_error {
  LIBUSB_SUCCESS = 0, LIBUSB_ERROR_IO = -1, LIBUSB_ERROR_INVALID_PARAM = -2, LIBUSB_ERROR_ACCESS = -3,
  LIBUSB_ERROR_NO_DEVICE = -4, LIBUSB_ERROR_NOT_FOUND = -5, LIBUSB_ERROR_BUSY = -6, LIBUSB_ERROR_TIMEOUT = -7,
  LIBUSB_ERROR_OVERFLOW = -8, LIBUSB_ERROR_PIPE = -9, LIBUSB_ERROR_INTERRUPTED = -10, LIBUSB_ERROR_NO_MEM = -11,
  LIBUSB_ERROR_NOT_SUPPORTED = -12, LIBUSB_ERROR_OTHER = -99
}
 
enum  libusb_capability { LIBUSB_CAP_HAS_CAPABILITY = 0x0000U, LIBUSB_CAP_HAS_HOTPLUG = 0x0001U, LIBUSB_CAP_HAS_HID_ACCESS = 0x0100U, LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER = 0x0101U }
 

関数

int libusb_has_capability (uint32_t capability)
 
const char * libusb_error_name (int error_code)
 
const struct libusb_versionlibusb_get_version (void)
 
static uint16_t libusb_cpu_to_le16 (const uint16_t x)
 
int libusb_setlocale (const char *locale)
 
const char * libusb_strerror (int errcode)
 

変数

static const char *const usbi_locale_supported [] = { "en", "nl", "fr", "ru", "de", "hu" }
 

詳細説明

マクロ定義説明

◆ LIBUSB_CALL

#define LIBUSB_CALL

libusbのWindows呼び出し規約。

Windowsでは、使用可能なコンパイラと構成を選択できるので、他のプラットフォームとは異なり、ただ唯一の呼び出し規約(生成されたアセンブリ・コードでパラメーターを関数に渡す方法)でないことを意味します。

libusbは、Windows API自体と一致するWINAPI規則(stdcall呼び出し規則に変換されます)を使用し、ライブラリがこの方法でコンパイルされることを保証します。 パブリック・ヘッダー・ファイルには適切なアノテーションも含まれているため、コード・ベース内でデフォルトで別の規則が使用されている場合でも、あなたのソフトウェアは正しい規則を使用します。

ソフトウェアに適用する必要がある1つの考慮事項は、libusbコールバックとして使用するすべての関数にこのLIBUSB_CALLアノテーションを付けて、それらも正しい呼び出し規約に合わせてコンパイルされるようにすることです。

Windows以外のオペレーティング・システムでは、このマクロは何も定義されていません。 これは、クロス・プラットフォームの互換性を気にせずにコードに適用できることを意味します。

◆ LIBUSB_API_VERSION

#define LIBUSB_API_VERSION   0x01000108

libusbのAPIバージョン。

バージョン1.0.13以降、機能の検出を支援するために、libusbはLIBUSB_API_VERSIONマクロを定義します。このマクロは、新しい呼び出しの導入、新しいマクロ/列挙型メンバーの定義など、APIに大幅な変更が加えられるたび、または、libusbアプリケーションがコンパイル時に検出する可能性のあるその他の要素のたびに増加します。

マクロは通常、アプリケーションで以下のように使用されます:

#if defined(LIBUSB_API_VERSION) && (LIBUSB_API_VERSION >= 0x01001234)
// Use one of the newer features from the libusb API
#endif

内部的にはLIBUSB_API_VERSIONは次のように定義されています: (libusb major << 24) | (libusb minor << 16) | (16 bit incremental)

◆ libusb_le16_to_cpu

#define libusb_le16_to_cpu   libusb_cpu_to_le16

16ビット値をリトル・エンディアンからホスト・エンディアン形式に変換します。リトル・エンディアン・システムでは、この関数は何もしません。ビッグ・エンディアンシステムでは、バイトが交換されます。

パラメーター
x変換したいリトル・エンディアンの値
戻り値
ホスト・エンディアンのバイト並びの値

列挙型解説

◆ libusb_standard_request

USB3.0仕様の表9-5で定義されている標準要求

列挙型
LIBUSB_REQUEST_GET_STATUS 

指定の受信側のステータスを要求します。

LIBUSB_REQUEST_CLEAR_FEATURE 

指定の機能をクリアまたは無効にします。

LIBUSB_REQUEST_SET_FEATURE 

指定の機能を設定または有効にします。

LIBUSB_REQUEST_SET_ADDRESS 

今後のアクセス全てのためにデバイス・アドレスを設定します。

LIBUSB_REQUEST_GET_DESCRIPTOR 

指定のデスクリプターを取得します。

LIBUSB_REQUEST_SET_DESCRIPTOR 

既存のデスクリプターを更新したり、新しいデスクリプターを追加したりするために使用されます。

LIBUSB_REQUEST_GET_CONFIGURATION 

現在のデバイス構成値を取得します。

LIBUSB_REQUEST_SET_CONFIGURATION 

デバイス構成を設定します。

LIBUSB_REQUEST_GET_INTERFACE 

指定のインターフェイスの選択された切替設定を返します。

LIBUSB_REQUEST_SET_INTERFACE 

指定のインターフェイスの切替インターフェイスを選択します。

LIBUSB_REQUEST_SYNCH_FRAME 

エンドポイントの同期フレームを設定して報告します。

LIBUSB_REQUEST_SET_SEL 

U1とU2の両方の出口待ち時間(Exit Latency)を設定します。

LIBUSB_SET_ISOCH_DELAY 

ホストがパケットを送信してからデバイスがパケットを受信するまでの遅延。

◆ libusb_request_type

制御転送の bmRequestType フィールドの要求タイプビット。

列挙型
LIBUSB_REQUEST_TYPE_STANDARD 

標準。

LIBUSB_REQUEST_TYPE_CLASS 

クラス。

LIBUSB_REQUEST_TYPE_VENDOR 

ベンダー。

LIBUSB_REQUEST_TYPE_RESERVED 

予約済。

◆ libusb_request_recipient

制御転送の bmRequestType フィールドの受信側ビット。値4〜31は予約済です。

列挙型
LIBUSB_RECIPIENT_DEVICE 

デバイス。

LIBUSB_RECIPIENT_INTERFACE 

インターフェイス。

LIBUSB_RECIPIENT_ENDPOINT 

エンドポイント。

LIBUSB_RECIPIENT_OTHER 

その他。

◆ libusb_error

エラー・コード。 ほとんどのlibusb関数は、成功すると0を返し、失敗するとこれらのコードの1つを返します。 libusb_error_name() を呼び出してエラー・コードの文字列表現を取得するか、 libusb_strerror() を呼び出してエンド・ユーザーに適切なエラー・コードの説明を取得できます。

列挙型
LIBUSB_SUCCESS 

成功(エラー無し)

LIBUSB_ERROR_IO 

入力/出力 エラー。

LIBUSB_ERROR_INVALID_PARAM 

不正なパラメーター。

LIBUSB_ERROR_ACCESS 

アクセスが拒否されました(権限が不十分です)

LIBUSB_ERROR_NO_DEVICE 

そのようなデバイスはありません(おそらく切断されています)

LIBUSB_ERROR_NOT_FOUND 

エンティティが見つかりません。

LIBUSB_ERROR_BUSY 

リソースがビジーです。

LIBUSB_ERROR_TIMEOUT 

操作タイムアウト。

LIBUSB_ERROR_OVERFLOW 

オーバーフロー。

LIBUSB_ERROR_PIPE 

パイプ・エラー。

LIBUSB_ERROR_INTERRUPTED 

システムコールが中断されました(おそらくシグナルが原因です)

LIBUSB_ERROR_NO_MEM 

メモリーが不十分です。

LIBUSB_ERROR_NOT_SUPPORTED 

このプラットフォームでは、操作がサポートされていないか、実装されていません。

LIBUSB_ERROR_OTHER 

その他のエラー。

◆ libusb_capability

現在実行中のプラットフォーム上のlibusbのインスタンスによってサポートされる機能。 libusb_has_capability() を呼び出して、ロードされたライブラリが指定の機能をサポートしているかどうかをテストします。

列挙型
LIBUSB_CAP_HAS_CAPABILITY 

The libusb_has_capability() API is available.

LIBUSB_CAP_HAS_HOTPLUG 

このプラットフォームでは、活線挿抜(hotplug)のサポートを利用できます。

LIBUSB_CAP_HAS_HID_ACCESS 

ライブラリは、ユーザーの介入を必要とせずにHIDデバイスにアクセスできます。

注意: 実際にHIDデバイスにアクセスする前に、 libusb_detach_kernel_driver() などの追加のlibusb関数を呼び出す必要がある場合があることに注意してください。

LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER 

ライブラリは、OSカーネルによって設定されている場合、 libusb_detach_kernel_driver() を使用したデフォルトのUSBドライバーの取り外しをサポートします。

関数解説

◆ libusb_has_capability()

int libusb_has_capability ( uint32_t  capability)

ロードされたライブラリに指定の機能があるかどうかを実行時に確認します。 この呼び出しは、libusb_init() の後に実行して、バックエンドが機能セットを更新したことを確認する必要があります。

パラメーター
機能the libusb_capability to check for
戻り値
ゼロ以外の値の場合、実行中のライブラリに指定の機能があります。それ以外の場合は0です。

◆ libusb_error_name()

const char* libusb_error_name ( int  error_code)

libusbエラーまたは転送ステータ・スコードのASCII名を含むNULLで終了する定数文字列を返します。呼び出し元は、返された文字列を free() してはいけません。

パラメーター
error_code名前を返す libusb_error または libusb_transfer_status コード。
戻り値
エラー名、またはerror_codeの値が既知のエラーコードまたはステータスコードでない場合は文字列 UNKNOWN です。

◆ libusb_get_version()

const struct libusb_version* libusb_get_version ( void  )

実行中のライブラリのバージョン(major、 minor、 micro、 nano、 rc)を含む へのポインタを返します。

◆ libusb_cpu_to_le16()

static uint16_t libusb_cpu_to_le16 ( const uint16_t  x)
inlinestatic

16ビット値をホスト・エンディアン形式からリトル・エンディアン形式に変換します。リトル・エンディアン・システムでは、この関数は何もしません。ビッグ・エンディアン・システムでは、バイトが交換されます。

パラメーター
x変換したいホスト・エンドポイント値
戻り値
リトル・エンディアンのバイト順の値

◆ libusb_setlocale()

int libusb_setlocale ( const char *  locale)

言語を設定します。エンコーディングではなく言語のみを設定してください!翻訳可能なlibusbメッセージに使用されます。

これは、デフォルトのsetlocale形式のロケール文字列を取ります。lang[-region] または lang[_country_region][.codeset] です。文字列のlang部分のみが使用され、 "de" などの2文字の ISO 639-1 コードのみが受け入れられます。 オプションのregion、country_region、codesetの部分は無視されます。 これは、翻訳可能な文字列を返す関数が指定したエンコーディングを尊重しないことを意味します。返されるすべての文字列は、UTF-8文字列としてエンコードされます。

libusb_setlocale() が呼び出されない場合、すべてのメッセージは英語になります。

次の関数は翻訳可能な文字列を返します: libusb_strerror() 注意: libusb_set_debug() を介して制御されるlibusbログ・メッセージは翻訳されておらず、常に英語であることに注意してください。

POSIX UTF-8環境で、libusbを標準のロケール設定に準拠させたい場合は、アプリがロケール設定を行った後、 libusb_setlocale(setlocale(LC_MESSAGES, NULL)) を呼び出します。

パラメーター
localelang[_country_region][.codeset] または lang[-region]lang [_country_region] 形式のロケール文字列。ここで、langは2文字の ISO 639-1 コードです。
戻り値
LIBUSB_SUCCESS ならば成功
LIBUSB_ERROR_INVALID_PARAM ロケールが要件を満たしていない場合は
LIBUSB_ERROR_NOT_FOUND 要求された言語がサポートされていない場合
LIBUSB_ERROR ならば他のエラー

◆ libusb_strerror()

const char* libusb_strerror ( int  errcode)

指定されたエラー・コードの簡単な説明を含む文字列定数を返します。この説明はエンド・ユーザーに表示することを目的としており libusb_setlocale() によって設定された言語になります。

返される文字列はUTF-8でエンコードされます。

メッセージは常に大文字で始まり、ピリオドなしで終わります。呼び出し元は返された文字列を free() してはいけません。

パラメーター
errcode説明が必要なエラー・コード
戻り値
UTF-8エンコーディングされた、エラー・コードの簡単な説明

変数解説

◆ usbi_locale_supported

const char* const usbi_locale_supported[] = { "en", "nl", "fr", "ru", "de", "hu" }
static

新しい libusb_strerror() 翻訳を追加する方法:

  1. 最新の strerror.c を以下からダウンロードします:
    https://raw.github.com/libusb/libusb/master/libusb/strerror.c
  2. UTF-8対応のエディターでファイルを開きます
  3. usbi_locale_supported[] の最後に、ロケールの2文字の ISO 639-1 コードを追加します。
    例えば、中国語の場合、次のように "zh" を追加します:
    ... usbi_locale_supported[] = { "en", "nl", "fr" };
    これに以下のように追加します:
    ... usbi_locale_supported[] = { "en", "nl", "fr", "zh" };
  4. { / * English (en) * / ... } 部分をコピって、usbi_localized_errors の最後に追加します
    例えば、中国語の場合、 usbi_localized_errors の最後の部分は以下のようになります:
    }, { / * Chinese (zh) * /
    "Success",
    ...
    "Other error",
    },
    };
  5. コピった部分の各英語メッセージを自分の言語に翻訳します
  6. ファイルを(UTF-8形式で)保存し、 libusb-devel@lists.sourceforge.net に送信します。
usbi_locale_supported
static const char *const usbi_locale_supported[]
定義: strerror.c:51