mmMapIoSpaceEx 函式 (wdm.h)
MmMapIoSpaceEx 例程會使用指定的頁面保護,將指定的實體位址範圍對應至非分頁系統空間。
語法
PVOID MmMapIoSpaceEx(
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] ULONG Protect
);
參數
[in] PhysicalAddress
指定要對應的 I/O 範圍的起始實體位址。
[in] NumberOfBytes
指定大於零的值,指出要對應的位元元組數目。
[in] Protect
旗標位,指定要用於對應範圍的保護。 呼叫端必須在 Protect 參數中設定下列其中一個旗標位。
旗標位 | 意義 |
---|---|
PAGE_READONLY | 對應的範圍只能讀取,不能寫入。 |
PAGE_READWRITE | 對應的範圍可以讀取或寫入。 |
PAGE_EXECUTE | 可以執行對應的範圍,但無法讀取或寫入。 |
PAGE_EXECUTE_READ | 可以執行或讀取對應的範圍,但無法寫入。 |
PAGE_EXECUTE_READWRITE | 對應的範圍可以執行、讀取或寫入。 |
此外,呼叫端可以在 Protect 參數中設定一個 (,但不能同時設定下列選擇性旗標位) 。
旗標位 | 意義 |
---|---|
PAGE_NOCACHE | 指定非快取記憶體。 |
PAGE_WRITECOMBINE | 指定寫入合併的記憶體 (處理器不應快取記憶體,但處理器) 可以合併寫入記憶體。 |
傳回值
MmMapIoSpaceEx 會傳回對應範圍之基底實體位址的基底虛擬位址。 如果對應範圍的空間不足,則會傳回 NULL。
備註
如果驅動程式在CM_PARTIAL_RESOURCE_DESCRIPTOR結構中收到 CmResourceTypeMemory 類型的翻譯資源,則驅動程式必須在裝置啟動期間呼叫此例程。 MmMapIoSpaceEx 會將資源清單中傳回的實體位址對應至虛擬位址,讓驅動程式可以存取裝置註冊。
例如,配置長期 I/O 緩衝區的 PIO 裝置驅動程式可以呼叫此例程,讓這類緩衝區可供存取,或讓裝置記憶體可供存取。
如需使用此例程的詳細資訊,請參閱 將 Bus-Relative 位址對應至虛擬位址。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 10 開始提供。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |