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クラスドライバ名
Audio0x01Usbaudio.sys
CDC(Communication Data Class)0x02Usbser.sys
HID(Human Interface Devices)0x03Hidusb.sys
Image0x06Usbscan.sys
MTP(Media Transfer Protocol)0x06 (Imageと共有)Winusb.sys
Printer0x07Usbprint.sys
MSC(Mass Storage Class)0x08Usbstor.sys
USB Hub0x09Usbhub.sys
CCID(Chip/Smart Card Interface Devices)0x0BUsbccid.sys
UVC(USB Video Class)0x0EUsbvideo.sys
PHDC(Personal healthcare Device Class)0x0F未サポート
Wireless Controller
Bluetooth(サブクラスコード= 0x01)
0xE0Bthusb.sys

デバイスクラス無しSW

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