次の方法で共有


Windows ドライバーの種類

Microsoft Windows ドライバーには、次の 2 つの基本的な種類があります。

  • ユーザー モード ドライバーはユーザー モードで実行され、通常は Win32 アプリケーションとカーネル モード ドライバーまたはその他のオペレーティング システム コンポーネントとの間でインターフェイスを提供します。

    たとえば、Windows Vista では、すべてのプリンター ドライバーがユーザー モードで実行されます。 プリンター ドライバー コンポーネントの詳細については、「印刷の概要」を参照してください。

  • カーネル モード ドライバーは、エグゼクティブの一部としてカーネル モードで実行されます。これは、I/O、プラグ アンド プレイ メモリ、プロセスおよびスレッド、セキュリティなどを管理するカーネル モードのオペレーティング システム コンポーネントで構成されます。 カーネル モード ドライバーは通常、レイヤーになっています。 一般的に、上位レベルのドライバーは通常、アプリケーションからデータを受信し、データをフィルター処理して、デバイスの機能をサポートする下位レベルのドライバーに渡します。

    一部のカーネル モード ドライバーは、Windows Driver Model (WDM) に準拠する WDM ドライバーでもあります。 すべての WDM ドライバーは、プラグ アンド プレイ、および電源管理をサポートしています。 WDM ドライバーは、Windows 98/Me および Windows 2000 以降のオペレーティング システムではソースコード互換性がありますが、バイナリ互換性はありません。

    カーネル モード ドライバーは、オペレーティング システム自体と同様に、適切に定義された一連の必須機能を備えている、独立したモジュール コンポーネントとして実装されます。 すべてのカーネル モード ドライバーは、システム定義の一連の標準ドライバー ルーチンを提供します。

次の図では、カーネル モード ドライバーをいくつかの種類に分けて示しています。

diagram illustrating types of kernel-mode drivers.

図に示すように、ドライバー スタックには、最上位レベル、中間レベル、および最低レベルの 3 つの基本的な種類のカーネル モード ドライバーがあります。 それぞれの種類の構造に大きな違いはありませんが、機能は大きく異なります。

  1. 最上位レベルのドライバー。 最上位レベルのドライバーには、次のようなファイル システムをサポートするファイル システム ドライバー (FSD) が含まれています。

    • NTFS

    • ファイル アロケーション テーブル (FAT)

    • CD-ROM ファイル システム (CDFS)

    最上位レベルのドライバーは、中間レベルの関数ドライバーや最下位レベルのハードウェア バス ドライバーなど、基になる下位レベルのドライバーからのサポートに常に依存します。

  2. 仮想ディスク、ミラー、およびデバイス タイプ固有のクラス ドライバーなどの中間ドライバーです。 中間ドライバーは、基になる下位レベルのドライバーからのサポートに依存します。 中間ドライバーは、次のようにさらに細分化されます。

    • 関数ドライバーは、I/O バス上の特定の周辺機器を制御します。

    • フィルター ドライバーは、関数ドライバーの上位または下位に挿入されます。

    • ソフトウェア バス ドライバーは、より上位レベルのクラス、関数、またはフィルター ドライバーを接続できる、一連の子デバイスを提供します。

      たとえば、オンボードされている異種デバイスが接続されている多機能アダプターを制御するドライバーは、ソフトウェア バス ドライバーです。

    • システムで定義されたクラス インターフェイス、またはミニクラス インターフェイスをエクスポートするシステム提供のクラス ドライバーは、実質的には、1 つ以上のミニクラス ドライバー (ミニ ドライバーとも呼ばれる) がリンクされている中間ドライバーです。 リンクされたクラスとミニ ドライバーの各ペアは、関数ドライバーまたはソフトウェア バス ドライバーと同等の機能を提供します。

  3. 最下位レベルのドライバーは、周辺機器が接続されている I/O バスを制御します。 最下位レベルのドライバーは、下位レベルのドライバーに依存しません。

    • ハードウェア バス ドライバーはシステム提供され、通常は動的に構成可能な I/O バスを制御します。

      ハードウェア バス ドライバーは、プラグ アンド プレイ マネジャーと連携して、ドライバーで制御される I/O バスに接続されているすべての子デバイスのシステム ハードウェア リソースを構成および再構成します。 これらのハードウェア リソースには、デバイス メモリと割り込み要求 (IRQ) のマッピングが含まれます。 (ハードウェア バス ドライバーには、Windows 2000 以前の Windows NT ベースのオペレーティング システムのリリースで HAL コンポーネントによって提供された機能の一部が適用されています。)

    • 物理デバイスを直接制御するレガシ ドライバーは、最下位レベルのドライバーです。