このページの本文へ

前へ 1 2 次へ

Windows Info 第179回

USB Type-Cで再スタートを切ったWindowsとUSBの関係

2019年06月30日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

 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デバイスは、すべて一定の仕様を持ち、その情報を常に一定の手順で調べることができる。また、デバイスクラスで仕様が決まるため、同一クラスのデバイスはドライバーを共有できる。USBDevViewを使うと、USBデバイスの情報を表示させることができる

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

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン