次の方法で共有


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

MmMapLockedPages

MmUnmapIoSpace