Поделиться через


Функция MmMapIoSpaceEx (wdm.h)

Подпрограмма MmMapIoSpaceEx сопоставляет заданный диапазон физических адресов с нестраничным системным пространством с помощью указанной защиты страницы.

Синтаксис

PVOID MmMapIoSpaceEx(
  [in] PHYSICAL_ADDRESS PhysicalAddress,
  [in] SIZE_T           NumberOfBytes,
  [in] ULONG            Protect
);

Параметры

[in] PhysicalAddress

Указывает начальный физический адрес диапазона ввода-вывода, который необходимо сопоставить.

[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 сопоставляет физический адрес, возвращенный в списке ресурсов, с виртуальным адресом, через который драйвер может получить доступ к регистрам устройств.

Например, драйверы устройств piO, которые выделяют долгосрочные буферы ввода-вывода, могут вызывать эту подпрограмму, чтобы сделать такие буферы доступными или сделать память устройства доступной.

Дополнительные сведения об использовании этой подпрограммы см. в разделе сопоставления Bus-Relative адресов с виртуальными адресами.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 10.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

См. также

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace