次の方法で共有


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 を送受信する必要があることを十分に強調することはできません。 ドライバーがスタックの一部であり、適切に情報を受け取り、処理し、渡さない場合、ドライバーがシステムクラッシュを引き起こす可能性があります。

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」を参照してください。