MmMapIoSpace 関数 (wdm.h)
MmMapIoSpace ルーチンは、指定された物理アドレス範囲を非ページ システム空間にマップします。
構文
PVOID MmMapIoSpace(
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] MEMORY_CACHING_TYPE CacheType
);
パラメーター
[in] PhysicalAddress
マップする I/O 範囲の開始物理アドレスを指定します。
[in] NumberOfBytes
マップするバイト数を示す、0 より大きい値を指定します。
[in] CacheType
物理アドレス範囲のマップに使用するキャッシュ属性を示すMEMORY_CACHING_TYPE値を指定します。
戻り値
MmMapIoSpace は、範囲の基本物理アドレスをマップする基本仮想アドレスを返します。 範囲をマッピングするための領域が不足している場合は、 NULL を返します。
注釈
ドライバーは、CM_PARTIAL_RESOURCE_DESCRIPTOR構造体でCmResourceTypeMemory 型の翻訳されたリソースを受け取る場合、デバイスの起動時にこのルーチンを呼び出す必要があります。 MmMapIoSpace は、リソース一覧で返される物理アドレスを、ドライバーがデバイス レジスタにアクセスできる論理アドレスにマップします。
MmMapIoSpace は、ロックダウンされているページ (MDL または I/O 領域のロックされたページに属する) でのみ使用する必要があります。それ以外の場合は、メモリの所有者がメモリを解放できます (またはメモリをページイン/アウトする場合など)。
たとえば、長期的な I/O バッファーを割り当てる PIO デバイスのドライバーは、このようなバッファーにアクセスできるようにするか、デバイス メモリにアクセスできるようにするために、このルーチンを呼び出すことができます。
このルーチンの使用方法の詳細については、「 仮想アドレスへの Bus-Relative アドレスのマッピング」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | IRQL <=DISPATCH_LEVEL |