MmMapIoSpaceEx ルーチンは、指定されたページ保護を使用して、指定された物理アドレス範囲を非ページ システム空間にマップします。
構文
PVOID MmMapIoSpaceEx(
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] ULONG Protect
);
パラメーター
[in] PhysicalAddress
マップする I/O 範囲の開始物理アドレスを指定します。
[in] NumberOfBytes
マップするバイト数を示す、0 より大きい値を指定します。
[in] Protect
マップされた範囲に使用する保護を指定するフラグ ビット。 呼び出し元は、Protect パラメーターに次のいずれかのフラグ ビットを設定する必要があります。
フラグ ビット | 意味 |
---|---|
PAGE_READONLY | マップされた範囲は読み取り専用で、書き込みできません。 |
PAGE_READWRITE | マップされた範囲は読み取りまたは書き込み可能です。 |
PAGE_EXECUTE | マップされた範囲は実行できますが、読み取りまたは書き込みは実行できません。 |
PAGE_EXECUTE_READ | マップされた範囲は、実行または読み取りはできますが、書き込まれません。 |
PAGE_EXECUTE_READWRITE | マップされた範囲は、実行、読み取り、または書き込みが可能です。 |
さらに、呼び出し元は、Protect パラメーターに次の省略可能なフラグ ビットの 1 つ (両方ではなく) を設定できます。
フラグ ビット | 意味 |
---|---|
PAGE_NOCACHE | キャッシュされていないメモリを指定します。 |
PAGE_WRITECOMBINE | 書き込み結合メモリを指定します (メモリはプロセッサによってキャッシュされませんが、メモリへの書き込みをプロセッサで結合できます)。 |
戻り値
MmMapIoSpaceEx は、範囲の基本物理アドレスをマップするベース仮想アドレスを返します。 範囲をマッピングするための領域が不足している場合は、null 返します。
備考
ドライバーは、CM_PARTIAL_RESOURCE_DESCRIPTOR 構造体で cmResourceTypeMemory の種類 変換されたリソースを受け取る場合、デバイスの起動時にこのルーチンを呼び出す必要があります。 MmMapIoSpaceEx は、リソース 一覧で返された物理アドレスを、ドライバーがデバイス レジスタにアクセスできる仮想アドレスにマップします。
たとえば、長期的な I/O バッファーを割り当てる PIO デバイスのドライバーは、このようなバッファーにアクセスできるようにするか、デバイス メモリにアクセスできるようにするために、このルーチンを呼び出すことができます。
このルーチンの使用方法の詳細については、「仮想アドレスへの Bus-Relative アドレスのマッピング」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 以降で使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |
関連項目
mmAllocateContiguousMemory の
mmAllocateNonCachedMemory の