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 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サイト)。ドライバのプログラミングは一般的に難易度が高いです。