次の方法で共有


ダイレクト I/O の使用

一度に大量のデータを転送できるデバイスのドライバーは、それらの転送にダイレクト I/O を使用する必要があります。 大量転送にダイレクト I/O を使用すると、割り込みのオーバーヘッドを減らし、バッファー内の I/O に固有のメモリ割り当て操作とコピー操作を排除することで、ドライバーのパフォーマンスが向上します。

一般に、大容量記憶装置ドライバーは、ダイレクト メモリ アクセス (DMA) またはプログラミングされた I/O (PIO) を使用する最下位レベルのドライバーや、その上にチェーンされている中間ドライバーなど、転送要求に対してダイレクト I/O を要求します。

I/O マネージャーは、I/O 操作がダイレクト I/O を使用していることを次のように判断します。

ダイレクト I/O を使用するドライバーでは、バッファー内の I/O を使用して一部の IRP を処理する場合もあります。 特に、ドライバーは通常、読み取りおよび書き込み操作にダイレクト I/O を使用するかどうかに関係なく、データ転送を必要とする IRP_MJ_DEVICE_CONTROL 要求の一部の I/O 制御コードにバッファー I/O を使用します。

ダイレクト I/O 転送の設定は、DMA と PIO のどちらが使用されているかによって若干異なります。 詳細については、以下を参照してください:

DMA でのダイレクト I/O の使用

PIO でのダイレクト I/O の使用

ドライバーは、DMA および PIO 転送中にキャッシュの一貫性を維持するための手順を実行する必要があります。 詳細については、「キャッシュの一貫性の維持」を参照してください。