次の方法で共有


非同期 I/O のサポート

I/O マネージャーは、I/O 要求の発信元 (通常はユーザー モード アプリケーションですが、場合によっては別のドライバー) が I/O 要求が完了するのを待つ代わりに実行を続行できるように、非同期 I/O サポートを提供します。 非同期 I/O のサポートにより、システム全体のスループットと、I/O 要求を行うコードのパフォーマンスの両方が向上します。

非同期 I/O サポートでは、カーネル モード ドライバーは、必ずしも I/O マネージャーに送信されたのと同じ順序で I/O 要求を処理するわけではありません。 I/O マネージャーまたは上位レベルのドライバーは、受信時に I/O 要求を並べ替えることができます。 ドライバーは、大規模なデータ転送要求をより小さな転送要求に分割できます。 さらに、ドライバーは、特にマルチプロセッサ セーフでメンションされた対称マルチプロセッサ プラットフォームで、I/O 要求処理を重複させることができます。

さらに、カーネル モード ドライバーの個々 の I/O 要求の処理は必ずしもシリアル化されるわけではありません。 つまり、ドライバーは、次の受信 I/O 要求の処理を開始する前に、必ずしも各 IRP 処理を完了するわけではありません。

ドライバーが IRP を受け取ると、できるだけ多くの IRP 固有の処理を実行して応答します。 ドライバーが非同期 IRP 処理をサポートしている場合は、必要に応じて、次のドライバーに IRP を送信し、最初の IRP が完了するのを待たずに次の IRP の処理を開始できます。 ドライバーは、別のドライバーが IRP の処理を完了したときに I/O マネージャーが呼び出す "完了ルーチン" を登録できます。 ドライバーは、IRP の I/O 状態ブロックの状態値を提供します。他のドライバーは、I/O 要求の状態を判断するためにアクセスできます。

ドライバーは、デバイス拡張と呼ばれる、デバイス オブジェクトの特殊な部分に、現在の I/O 操作に関する状態情報を維持できます。

詳細については、IRP の処理入出力手法を参照してください。