USB通信ライブラリ
かつてのWindowsは、任意のUSBデバイスと通信するためにUSBクラアント・ドライバが必要でした。
ですが、Windows8.1以降では各種USB APIにより、ほとんどのデバイスとの通信がアプリケーション・レベルで可能です。
ストアアプリとデスクトップアプリで提供されるAPI
以下の表の関数がUSB通信アプリケーション開発のために提供されます。
USB関連API実装表
機能 | Windows ストア アプリ | Windows デスクトップ アプリ |
---|---|---|
デバイスの検出 | Windows.Devices.Enumeration | SetupAPIとWinUsb_Initialize |
コントロール転送 | UsbSetupPacket | WINUSB_SETUP_PACKET |
UsbControlRequestType | WinUsb_ControlTransfer | |
UsbDevice.SendControlInTransferAsync | ||
UsbDevice.SendControlOutTransferAsync | ||
記述子の取得 | UsbDevice.DeviceDescriptor | WinUsb_GetDescriptor |
UsbConfiguration.Descriptors | ||
UsbInterface.Descriptors | ||
UsbEndpointDescriptor | ||
バルク転送の送信 | UsbBulkInPipe | WinUsb_ReadPipe |
UsbBulkOutPipe | WinUsb_WritePipe | |
割り込み転送の送信 | UsbInterruptInPipe | WinUsb_ReadPipe |
UsbInterruptOutPipe | WinUsb_WritePipe | |
アイソクロナス転送の送信 | サポートされていない。 | WinUsb_ReadIsochPipe |
WinUsb_ReadIsochPipeAsap | ||
WinUsb_WriteIsochPipe | ||
WinUsb_WriteIsochPipeAsap | ||
終了 | UsbDevice.Close | WinUsb_Free |
OUKはUSB関連のAPIを使い、貴社のUSBデバイスをアクセスするためのミドルウェアをライブラリとして提供いたします。
USBクライアント ドライバの開発
USB機器の制御をアプリケーションから
プログラムによるUSBデバイスのコントロールを実現、 あるいはUSBデバイスドライバの雛形として 代表的なUSB機器構成と転送モードに対応したUSBクライアント・ドライバと、その制御用ライブラリです。
付属の制御用ライブラリをアプリケーション(ユーザ モードで動作するプログラム)から使用することで、
デバイスドライバを通じてUSB機器をコントロールできます。
また、製品付属のソースコードをベースにして、USBデバイスドライバを作成することも可能です。
専用ライブラリの最大の特徴は、USB機器を制御するための各種コマンドを、通常のアプリケーションから発行できる点にあります。
制約のあるカーネルモード・プログラミングは不要です。
なお、ライブラリを他のデバイスドライバから使用することもできます。
- ベーシックな構成のUSB 機器のデバイスドライバとして
- USB 機器を直接制御するようなアプリケーションの開発に
- ハードウェアの動作検証等に
USBの登場以来、デバイスドライバ開発に携わっているオークならではのノウハウを凝縮。 弊社のソフトウェア部品だから実現できる、安定性、性能を御社のUSBデバイスにも、ぜひご活用ください。
ドライバ/ライブラリ仕様
1つのコンフィギュレーション、1 つのインターフェイスを持つUSB機器をサポート
USB 機器には複数のコンフィギュレーション、複数のインターフェイスを持つものもありますが、
本ドライバ及びユーザーモード・ライブラリを使って制御できるのは、
単一のコンフィギュレーション、単一のインターフェイスのみです。
より複雑なUSB機器の制御には、カスタム設計のドライバをご検討下さい。
-
複数のパイプをサポート
-
サポートする転送方式
- バルク転送
- インタラプト転送
- コントロール転送
- ベンダー・リクエスト
- クラス・リクエスト
-
Win32 のReadFile/WriteFile システムコールを経由して実現するリクエスト
- パイプに対するバルク転送
- インタラプト転送
-
Win32 のDeviceIoControl システムコールを経由して実現するリクエスト
- デバイスのリセット
- 各コントロール転送
ユーザーモード・ライブラリ
オークのUSB クライアント・ドライバには、専用ライブラリが用意されています。
このライブラリを使用すれば、USBデバイス制御に必要なデバイス名の取得、各種コントロール/データ転送を容易に行うことができます。
-
ポート番号からデバイス名DeviceNameを取得
本デバイスドライバでは固定のデバイス名を持ちません。
そのため、単一のドライバで複数のUSB機器を制御することができます。 デバイスドライバと専用ライブラリが連携動作するにはデバイス名が必要ですので、 USB機器のベンダーIDとプロダクトID を指定して、デバイス名を取得することになります。 必要なら接続しているハブとポート番号を指定することもできます。
このような設計になっているのは、USB 機器を複数接続して、 専用ライブラリを使用したプログラムによりハードウェアのテストへの利用を可能にするためです。 -
デバイスのオープン(デフォルト・パイプ使用/パイプ指定あり)
一連のUSB 機器制御の開始手続きとして、USB 機器のデフォルト・パイプ、あるいは指定したパイプをオープンします。
-
データの読み書き
バルク転送、インタラプト転送のリクエストを発行します。
-
デバイス/パイプのリセット
停止(Halt)、あるいはエラー状態にあるUSB機器、あるいは特定のパイプをリセットします。
-
ベンダー・リクエスト、クラス・リクエストの発行。Clear Featureリクエストの発行
USB 機器の製造元が独自に設定できるベンダー・リクエスト、USB 機器の種類(Device Class)に応じて規格 で定められているクラス・リクエストを発行します。
また、USB 機器の機能/状態(Feature)を変更するClear Feature リクエストを発行することもできます。 -
デバイス情報の取得
USB 機器の固有情報であるデバイス・ディスクリプタ他を取得できます。
- デバイスの機能等の情報を格納したデバイス・ディスクリプタ
- デバイス構成や消費電力に関する情報であるコンフィギュレーション・ディスクリプタ
- インターフェイスに関する情報であるインターフェイス・ディスクリプタ
- 各エンドポイントの転送能力等を記述したエンドポイン・ディスクリプタ
を取得することができます。
カスタマイズ
提示いただいたお客様のUSB機器仕様に合わせて、軽微な修正(※1)から、 本格的なカスタマイズ(※2)まで柔軟に対応致します。
※1. 作業費用は標準料金に含まれます。
※2. 別途、お見積り致します。
メモリカード・リーダーやCD-ROMドライブなど、 ストレージ用途には「USB ストレージ・ドライバ」をご検討下さい。
USBクライアント・ドライバとは
USBクライアント・ドライバとは
特殊なUSBデバイスはUSBクライアント・ドライバを開発します。
USBクライアント・ドライバとは、特定のUSBデバイスを機能させるためにUSBハードウェアと通信するドライバ・ソフトウェアのことです。
USB デバイスのカスタム・クライアント・ドライバーは、Windows Driver Frameworks (WDF) または Windows ドライバー モデル (WDM) を使って開発が可能です。
ほとんどのクライアント ドライバーはハードウェアと直接通信するのではなく、Microsoftが提供するUSBドライバー・スタックを利用し、各種要求をドライバ・スタックに送ります。
USBドライバー・スタックのどのレイヤー(層)を使うかは、デバイスの性格により決定します。
ただし、ドライバを独自で開発し、実際に製品に添付して使う場合、Micorsoftの「Windows ハードウェア認定プログラム」 WHCP(Windows Hardware Certification Program)により、認定を取得する必要があります。
WHCP取得は手間がかかることが多く、APIでの解決が簡単です。
USB機器の制御をアプリケーションから
プログラムによるUSBデバイスのコントロールを実現、 あるいはUSBデバイスドライバの雛形として代表的なUSB機器構成と転送モードに対応したUSBクライアント・ドライバと、その制御用ライブラリです。
OS対応表
御社のご希望に基づきカスタマイズなども可能です。
まずはお気軽にお問い合わせください。