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


Функция 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 (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <=DISPATCH_LEVEL

См. также

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace