USBデバイスクラス

USB通信を実現するためには、ホストSW(ドライバ)とデバイスSW(ファームウェア)が必要です。ただし特定機能に関しては、ホストSWを開発する必要がありません。この特定機能をデバイスクラスと呼びます。デバイスSWがデバイスクラスに対応すると、ホスト(パソコン等)に標準でインストールされているドライバが呼び出され、動作します。

例えばUSBメモリをPCに挿すと、ホストSWのインストール不要でUSBメモリを使用できます。これは、USBメモリがデバイスクラス(Mass Storage Class)に対応しているため、OSが持つMass Storage Class対応ドライバが自動的に呼び出され、動作するためです。ちなみにWindowsにおけるMass Storage Classドライバはusbstor.sysです。

Mass Storage

Mass Storage Class以外にも以下のデバイスクラスがあります。これらデバイスクラスの規格書も、USB規格団体より誰でも無償で入手できます(USBデバイスクラス規格書)。

代表的なデバイスクラス一覧

デバイスクラス名 クラスコード
(bDeviceClass)
Windowsクラスドライバ名
Audio 0x01 Usbaudio.sys
CDC(Communication Data Class) 0x02 Usbser.sys
HID(Human Interface Devices) 0x03 Hidusb.sys
Image 0x06 Usbscan.sys
MTP(Media Transfer Protocol) 0x06 (Imageと共有) Winusb.sys
Printer 0x07 Usbprint.sys
MSC(Mass Storage Class) 0x08 Usbstor.sys
USB Hub 0x09 Usbhub.sys
CCID(Chip/Smart Card Interface Devices) 0x0B Usbccid.sys
UVC(USB Video Class) 0x0E Usbvideo.sys
PHDC(Personal healthcare Device Class) 0x0F 未サポート
Wireless Controller
Bluetooth(サブクラスコード= 0x01)
0xE0 Bthusb.sys

デバイスクラス無しSW

計測器等の独自の機能(デバイスクラス無し)や、ホストが対応していないデバイスクラスを実現するには、ホストSWを開発する必要があります。USBデバイスを制御するホストSWを実現するためには、USBドライバを開発します。Windows向けドライバを開発するには、WDK(Windows Driver Kit)を用います。WDKは無償で入手可能です(Microsoft社のWDKサイト)。ドライバのプログラミングは一般的に難易度が高いです。