コンピューターは、外部との間で入出力 (I/O) を提供するさまざまなデバイスで構成されています。 一般的なデバイスは、キーボード、マウス、オーディオ コントローラー、ビデオ コントローラー、ディスク ドライブ、ネットワーク ポートなどです。 デバイス ドライバーは、デバイスとオペレーティング システム間のソフトウェア接続を提供します。 このため、I/O はデバイス ドライバー ライターにとって重要です。
Windows カーネル モード I/O マネージャーは、アプリケーションとデバイス ドライバーによって提供されるインターフェイス間の通信を管理します。 デバイスはオペレーティング システムと一致しない速度で動作するため、オペレーティング システムとデバイス ドライバーの間の通信は、主に I/O 要求パケット (IRP) を介して行われます。 これらのパケットは、ネットワーク パケットまたは Windows メッセージ パケットに似ています。 オペレーティング システムから特定のドライバーに渡され、ドライバー間で渡されます。
Windows I/O システムには、スタックと呼ばれる階層型ドライバー モデルが用意されています。 通常、IRP は、通信を容易にするために、同じスタック内の 1 つのドライバーから別のドライバーに移動します。 たとえば、ジョイスティック ドライバーは USB ハブと通信する必要があり、USB ホスト コントローラーと通信する必要があります。USB ホスト コントローラーは、PCI バスを介して他のコンピューター ハードウェアと通信する必要があります。 スタックは、ジョイスティック ドライバー、USB ハブ、USB ホスト コントローラー、および PCI バスで構成されます。 この通信は、スタック内の各ドライバーが IRP を送受信することで調整されます。
スタック全体が効率的に動作するためには、ドライバーがタイムリーに IRP を送受信する必要があることを十分に強調することはできません。 ドライバーがスタックの一部であり、適切に情報を受け取り、処理し、渡さない場合、ドライバーがシステムクラッシュを引き起こす可能性があります。
IRP の詳細については、「IRP の 処理」を参照してください。
ドライバー スタックの詳細については、「 デバイス オブジェクトとデバイス スタック」を参照してください。
I/O 管理に関連するプログラミング手法については、「 I/O Manager プログラミング手法」を参照してください。
I/O マネージャーに直接インターフェイスを提供するルーチンには、通常、"Io" という文字が付きます。たとえば、 IoCreateDevice です。 I/O マネージャー ルーチンの一覧については、 I/O マネージャー ルーチンを参照してください。
詳細については、 I/O 要求パケット と IRP 構造体 (wdm.h) を参照してください。
I/O マネージャーには、プラグ アンド プレイ マネージャーと電源マネージャーの 2 つのサブコンポーネントがあります。 プラグ アンド プレイと電源管理のテクノロジの I/O 機能を管理します。 プラグ アンド プレイ管理の詳細については、「 Windows Kernel-Mode プラグ アンド プレイ マネージャー 」を参照してください。電源管理の詳細については、「 Windows Kernel-Mode Power Manager」を参照してください。