Windowsでは、USBデバイスの大半は接続するだけで動作する。しかし、ここに来るまでには長い道のりがあった。最初のUSB 1.0の仕様書が公開されたのは1996年。その後1997年あたりからUSBを搭載するPCが販売されはじめたが、Windowsが対応したのは、1997年8月の「Windows 95 OSR2 USB Supplement」からだった。
これは、Windows 95のPCメーカー向けのバージョンであり、一般ユーザー向けのパッケージではなかった。これに対応したPCでは標準でUSBに対応したが、実際のデバイスはほとんどなく、USBがまともに利用できるようになるのは、1999年のWindows 98 Second Editionあたりからだ。
USBとWindowsの関係の歴史
Windows 95の登場前後から、PCには新しいインターフェースが次々と登場した。IrDA(1994年)、Bluetooth(1998年)、無線LAN(IEEE 802.11、1997年)などである。
当時、IBM PC/ATをベースとしたアーキテクチャでは、「レガシー」なデバイスが多数使われていた。たとえば、RS-232に準拠した「シリアル」インターフェースや、IEEE1284(あるいはセントロニクス仕様とも)準拠などの「パラレルポート」、PCキーボードコネクタなどである。
PC/ATでは、拡張ボードの増設が容易だったこともあり、周辺装置を接続するには、既存のレガシーなデバイスを使うか、拡張ボードを追加して利用するのが一般的だった。たとえば、当時のマウスの接続は、シリアルポートのものが多かったが、拡張ボードを接続する、俗に言う「バスマウス」もあった。その後、手軽さなどから、シリアル、パラレル、PS/2キーボードコネクタなどを利用する周辺機器が増えたが、特殊な接続や高速なデータ転送が必要な場合には拡張ボードの利用が必須だった。
インテルとマイクロソフトは、1997年から「PC System Design Guide」を発行、PCの「近代化」に着手する。俗に「PC 97」「PC 98」といった仕様である。インテルは、レガシーなインターフェースを廃することによるシステムの高速化や単純化を狙い、マイクロソフトはWindowsの移植の容易さを狙った。
ハードウェアメーカーが同じCPU、チップセット、周辺デバイスを使うことで、Windowsは容易に動作できるようになり、新しいハードウェアを有効に利用できるようになった。USBは、1999年のPC System Design Guide(PC 99)では、必須装備となった。
PC System Design Guideにより、PCの「近代化」が急速に進む反面、PCの差別化は困難になり、多くのPCメーカーは、システムとしての統合性が高く、工夫を入れやすいラップトップがビジネスの主流となった。ラップトップなどのモバイルPCがデスクトップPCを追い越したのも2000年あたりである。
USBは、1998年にはバージョン1.1、2000年にはUSB 2.0として最大480Mbpsとなる。その後、2001年にはWindows XPが登場する。
USBの最大の魅力は接続が簡単なこと
USB周辺機器の接続が簡単なのは、Windowsが標準的な機器のデバイスドライバーを持っているからである。
これが可能なのは、USBでは周辺機器を「デバイスクラス」で分類し、それぞれでのデバイスクラスで動作に必要なインターフェースなどを定義しているためだ。より簡単に言えば、USBメモリなどの「マスストレージデバイス」は、PC側からみると全部同じハードウェアのようにみえるようになっているのだ。
このため、Windows側は汎用のUSBマスストレージデバイスクラスのデバイスドライバーを用意しておけば、どんなUSBメモリであっても、それがUSBマスストレージデバイスクラスに準拠しているものなら接続が可能なのである。
現時点でのUSBデバイスクラスには、以下の表のようなものがあり、その多くにWindowsは対応している。
ただし、各デバイスクラスには、サブクラスと呼ばれる動作が違うものがある。たとえば、USB通信デバイスクラスには、シリアルポートもあれば、モデムやイーサーネットなどがある。あるいはHID(Human Interface Device)クラスには、キーボードもあれば、マウスやジョイスティックなどがある。同じデバイスであっても、挙動の違うものも少なくないため、1つのデバイスドライバーで対応するというわけにはいかない。
さらに、論理的なUSBデバイスを複数まとめた「複合デバイス」もあれば、1つの論理デバイスの中に複数の「インターフェース」を持つデバイスもある。USBのデバイスクラスでは、論理的なデバイスだけでなく、インターフェースも含まれている。
Windowsでは、「フィルタードライバー」と呼ばれる仕組みを使うことで、デバイスドライバーの挙動を一部変えたり、メーカー固有の機能を制御するといったことが可能になっている。USB周辺機器に付属する「デバイスドライバー」にはこうした構成のものも少なくない。
なお、Windowsが対応するデバイスクラスやサブクラスのデバイスドライバーがなくても、「汎用USBドライバー」とソフトウェアの組合せでデバイスを制御する方法がある。これが「WinUSB.sys」という仕組みだ。
デバイスドライバーは、カーネルモードで動作するものであるため、その開発は簡単ではない。WinUSB.sysは、どんなUSBデバイスクラスとも組みあわせられる汎用のデバイスドライバーでその制御は、Win32アプリケーションからできる。アプリケーションは、WinUSB.DLLを介してWinUSB.sysを制御することができる。特定のアプリケーションとの組合せだけで利用するような場合には、この方法でUSB周辺機器を制御することが可能だ。
なお、USBDeview.exeなどを利用すると、組み込まれたUSBデバイスの情報を表示できる。
●USB Deview
https://www.nirsoft.net/utils/usb_devices_view.html
この連載の記事
-
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る - この連載の一覧へ