共用方式為


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

言論

如果驅動程式在裝置啟動時收到 CmResourceTypeMemory 類型的翻譯資源,則必須 CM_PARTIAL_RESOURCE_DESCRIPTOR 在裝置啟動期間呼叫此例程。 MmMapIoSpaceEx 將資源清單中傳回的實體地址對應至驅動程式可以存取裝置註冊的虛擬位址。

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

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

要求

要求 價值
最低支援的用戶端 從 Windows 10 開始提供。
目標平臺 普遍
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

另請參閱

mmAllocateContiguousMemory

mmAllocateNonCachedMemory

MmMapLockedPages

mmUnmapIoSpace