次の方法で共有


DispatchRead、DispatchWrite、DispatchReadWrite ルーチン

ドライバーの DispatchRead ルーチンと DispatchWrite ルーチンは、それぞれ 、IRP_MJ_READIRP_MJ_WRITEの I/O 関数コードを使用して IRP を処理します。 また、結合 された DispatchReadWrite ルーチンは、これらの I/O 関数コードの両方の IRP を処理できます。

システムにデータを転送できるデバイスのすべてのドライバーには、 DispatchRead ルーチンが必要です。 システムからデータを転送できるデバイスのすべてのドライバーには、 DispatchWrite ルーチンが必要です。 双方向にデータを転送するドライバーには、 DispatchReadWrite ルーチンを組み合わせることができます。

下位レベルのドライバーは 、IRP_MJ_READ 要求と IRP_MJ_WRITE 要求を非同期的に処理します。 したがって、最上位レベルのドライバーの DispatchRead ルーチンまたは DispatchWrite ルーチンは、IRP のそのドライバーの I/O スタックの場所に有効なパラメーターがある場合、さらに処理するためにこれらの要求を渡す必要があります。

ドライバーがバッファー処理または直接 I/O のデバイス オブジェクトを設定するかどうかは、転送要求の処理方法に影響します。 特に、ダイレクト I/O を使用して DMA 操作を行うドライバーでは、 IRP_MJ_READまたはIRP_MJ_WRITE 要求を満たすために、大規模な 転送要求を 一連の小さな転送操作に分割する必要がある場合があります。 詳細については、「 入力/出力手法」を参照してください。

次のサブセクションでは、バッファーされた I/O とダイレクト I/O を使用する最下位レベルのデバイス ドライバーと、その上に重ねられた上位レベルのドライバーにおける DispatchReadWrite ルーチンの設計と実装に関する考慮事項について説明します。

転送を非同期的に処理する

バッファー付き I/O を使用した DispatchReadWrite

ダイレクト I/O を使用した DispatchReadWrite

Higher-Level ドライバーにおける DispatchReadWrite

読み取り/書き込みディスパッチ ルーチンの概要