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

Подпрограмма MmMapIoSpace сопоставляет заданный диапазон физических адресов с непогребованным системным пространством.

Синтаксис

PVOID MmMapIoSpace(
  [in] PHYSICAL_ADDRESS    PhysicalAddress,
  [in] SIZE_T              NumberOfBytes,
  [in] MEMORY_CACHING_TYPE CacheType
);

Параметры

[in] PhysicalAddress

Указывает начальный физический адрес диапазона операций ввода-вывода для сопоставления.

[in] NumberOfBytes

Задает значение больше нуля, указывающее количество сопоставляемых байтов.

[in] CacheType

Задает значение MEMORY_CACHING_TYPE , указывающее атрибут кэша, используемый для сопоставления диапазона физических адресов.

Возвращаемое значение

MmMapIoSpace возвращает базовый виртуальный адрес, который сопоставляет базовый физический адрес для диапазона. Если места для сопоставления диапазона недостаточно, возвращается значение NULL.

Комментарии

Драйвер должен вызывать эту подпрограмму во время запуска устройства, если он получает переведенные ресурсы типа CmResourceTypeMemory в CM_PARTIAL_RESOURCE_DESCRIPTOR структуре. MmMapIoSpace сопоставляет физический адрес, возвращенный в списке ресурсов, с логическим адресом, по которому драйвер может получить доступ к регистрациям устройств.

MmMapIoSpace следует использовать только со страницами, которые заблокированы (принадлежат к заблокированным страницам MDL или пространства ввода-вывода), в противном случае владелец памяти может освободить ее (или память может быть выгружаема на страницы и т. д.).

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

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

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <=DISPATCH_LEVEL

См. также раздел

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace