MmMapIoSpaceEx 関数 (wdm.h)
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 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |