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

こちらもご覧ください

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace