このページの本文へ

基礎から覚える 最新OSのアーキテクチャー 第4回

Windowsを動かすデバイスドライバーの仕組み 前編

2011年09月15日 12時00分更新

文● 塩田紳二

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

 マイクロソフトは、当初から大量のデバイスドライバーを作り続けてきた。もちろん、GPUのようにデバイスドライバーのできが性能を左右するようなデバイスでは、メーカー自身がドライバーを提供する。一方でマイクロソフトも、Windowsのインストールパッケージに最初から入れておく、「安定」したドライバーを持っている(必ずしもマイクロソフトがゼロから作ったものばかりでもない)。これを「インボックスドライバー」と呼んで、メーカー配布のドライバーと区別することがある。

 すでに広く使われてはいるが、いまや主流の製品ではなく、メーカーのサポートも十分には行なわれていないようなデバイスの多くが、このインボックスドライバーに依存している。安価なUSBデバイスになると、メーカーによるデバイスドライバーの提供さえない。例えばUSBメモリーでは、デバイスドライバーが付属するようなものの方が今やまれである。

 またUSBなどでは、デバイスをいくつかの種類にわけているが、中でもHIDデバイスは、キーボードやマウスなどさまざまな種類の入力デバイスを包含している。実はHIDデバイスは、USBを介して一定の手順と一定のデータ形式だけをやりとりするようになっている。そのためデータ転送などの部分はほとんど共通で、あとは「やってきたデータをどう処理するのか」を、別のドライバーで決めるようになっている。つまりマウスもキーボードも、扱うデータの大まかな構造は同じだが、その中身を解釈して、OSに通知する方法だけが違うわけだ。

複雑なデバイスドライバーのレイヤー構造

 最近の周辺機器は、多くがUSBで接続するようになっている。このUSB自体も、OSからみればひとつのデバイスである。そのため、USBコントローラーにアクセスしたり、あるいはUSBを使ってデバイスとデータをやりとりするためには、デバイスドライバーが必要になる。

 Windowsで「デバイス マネージャー」を起動し、「表示」メニューで「デバイス(接続別)」に切り替えてみると、「PCIバス」の下にUSBホストコントローラー(利用しているチップセットなどにより名称は違う)がある。その先にはさらに「USBルートハブ」があって、その下に実際のデバイスがある。例えばキーボードなら、以下のようなつながりになっている。

接続順に見たWindows 7のUSBデバイスの例

PCIバス
USBホストコントローラー
USB Root Hub
USB入力デバイス
HIDキーボードデバイス

 つまり、USBキーボードからの入力を受け取るためには、PCIバスを制御してUSBホストコントローラーにアクセスしなければならないわけだ。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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