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 。
言論
如果驅動程式在裝置啟動時收到 CmResourceTypeMemory 類型的翻譯資源,則必須在 CM_PARTIAL_RESOURCE_DESCRIPTOR 結構中 呼叫此例程。 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 |