DMA リソースをメモリーオブジェクトに割り当てる前に、そのオブジェクトを移動できないようにする必要があります。そうしないと、デバイスがオブジェクトへの書き込みを試している間に、システムがそのオブジェクトをメモリーから削除する可能性があります。オブジェクトが見つからないと、データ転送に失敗し、システムが破壊される恐れがあります。DMA 転送中にメモリーオブジェクトが移動できないようにするプロセスは、オブジェクトのロックダウンと呼ばれます。
次のオブジェクトタイプは、明示的なロックが必要ありません。
strategy(9E) によってファイルシステムから生成されるバッファー。これらのバッファーはファイルシステムによってすでにロックされています。
デバイスドライバ内で割り当てられたカーネルメモリー ( ddi_dma_mem_alloc(9F) で割り当てられたものなど)。
ユーザー空間から生成されるバッファーなど、その他のオブジェクトについては、physio(9F) またはddi_umem_lock(9F) を使用してロックダウンする必要があります。これらの関数を使ったオブジェクトのロックダウンは通常、文字デバイスドライバの read(9E) またはwrite(9E) ルーチン内で実行されます。Data Transfer Methodsを参照してください。