共用方式為


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

指定大於零的值,指出要對應的位元元組數目。

[in] CacheType

指定 MEMORY_CACHING_TYPE 值,這個值表示用來對應實體位址範圍的快取屬性。

傳回值

MmMapIoSpace 會傳回對應範圍基底實體位址的基底虛擬位址。 如果對應範圍的空間不足,則會傳回 NULL

備註

如果驅動程式在CM_PARTIAL_RESOURCE_DESCRIPTOR結構中收到 CmResourceTypeMemory 類型的翻譯資源,則驅動程式必須在裝置啟動期間呼叫此例程。 MmMapIoSpace 會將資源清單中傳回的實體位址對應至邏輯位址,讓驅動程式可以存取裝置緩存器。

MmMapIoSpace 應該只與鎖定的頁面搭配使用, (屬於 MDL 或 I/O 空間的鎖定頁面) ,否則記憶體的擁有者可以釋放它 (或記憶體可以分頁/取出等 ) 。

例如,配置長期 I/O 緩衝區的 PIO 裝置驅動程式可以呼叫此例程,讓這類緩衝區可供存取,或讓裝置記憶體可供存取。

如需使用此例程的詳細資訊,請參閱 將 Bus-Relative 位址對應至虛擬位址

規格需求

需求
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL IRQL <=DISPATCH_LEVEL

另請參閱

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace