Windows カーネルモード I/O マネージャー
コンピューターは、外部との間で入出力 (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 を適時に送受信することは極めて重要です。 ドライバーがスタックの一部であり、適切に情報を受け取り、処理し、渡さなけれは、ドライバーがシステムクラッシュを引き起こす可能性があります。
IRの詳細については、 IRPの処理を参照してください。
ドライバー スタックの詳細については、「 デバイス オブジェクトとデバイス スタック」を参照してください。
I/O 管理に関連するプログラミング技術については、「 I/O Manager プログラミング手法」に関する記事を参照してください。
構成マネージャーに直接インターフェイスを提供するルーチンには、通常 "Io"という文字がプレフィックスとして付けられます。たとえば、 IoCreateDeviceです。 I/O マネージャー ルーチンの一覧については、「 I/O マネージャー ルーチン」を参照してください。
IRPS に関連するルーチンの一覧については、 IRPsを参照してください。
I/O マネージャーには、プラグ アンド プレイ マネージャーと電源マネージャーの 2 つのサブコンポーネントがあります。 プラグ アンド プレイと電源管理のテクノロジの I/O 機能を管理します。 プラグ アンド プレイ管理の詳細については、「 Windows カーネル モード プラグ アンド プレイ マネージャー 」を参照してください。電源管理の詳細については、「 Windows カーネル モード 電源マネージャー」を参照してください。