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 アドレスのマッピング」を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <=DISPATCH_LEVEL |
関連項目
mmAllocateContiguousMemory の
mmAllocateNonCachedMemory の