Windows I/O モデルの概要
すべてのオペレーティング システムには、周辺機器とのデータ フローを扱うための暗黙的または明示的な I/O モデルがあります。 Microsoft Windows I/O モデルが備える機能の 1 つとして非同期 I/O のサポートがあります。 この他にも、I/O モデルには次の汎用機能があります。
I/O マネージャーは、すべてのカーネル モード ドライバーに一貫性のあるインターフェイスを提供します。このようなドライバーとして、下位 ドライバー、中間ドライバー、ファイル システム ドライバーなどがあります。 ドライバーへのすべての I/O 要求は I/O 要求パケット (IRP) として送信されます。
I/O 操作は階層化されます。 I/O マネージャーは I/O システム サービスをエクスポートします。ユーザー モードで保護されたサブシステムがこのサービスを呼び出し、アプリケーションやエンド ユーザーに代わって I/O 操作を実行します。 I/O マネージャーは、これらの呼び出しをインターセプトして IRP を 1 つ以上設定し、多くの場合は階層化されているドライバーを通じて物理デバイスにその IRP をルーティングします。
I/O マネージャーは、ドライバーがサポートできる標準ルーチン群を定義します。そのルーチンには必須のものあれば、オプションのものもあります。 すべてのドライバーは、周辺機器の相違およびバス、関数、フィルター、ファイル システム ドライバーに必要な機能の相違を考慮した範囲で、比較的一貫性のある実装モデルに従います。
オペレーティング システム自体と同様にドライバーはオブジェクトベースです。 ドライバー、そのデバイス、システム ハードウェアはオブジェクトとして表現されます。 I/O マネージャーなどのオペレーティング システム コンポーネントは、ドライバーが適切なオブジェクトを操作して作業を完了するために呼び出すことができるカーネル モード サポート ルーチンをエクスポートします。
I/O マネージャーは、従来の I/O 要求を転送するために IRP を使用するだけでなく、PnP マネージャーと電源マネージャーとの連携によって PnP と電源要求を記述した IRP を送信します。