Функция 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 |