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


Макрос MmGetSystemAddressForMdl (wdm.h)

Подпрограмма MmGetSystemAddressForMdl устарела. Вместо этого используйте MmGetSystemAddressForMdlSafe .

MmGetSystemAddressForMdl — это макрос, возвращающий непагрегированный виртуальный адрес системного пространства для буфера, описанного в MDL. Он сопоставляет физические страницы, описанные заданным MDL, в системное пространство, если они еще не сопоставлены с системным пространством.

Синтаксис

PVOID MmGetSystemAddressForMdl(
   MDL
);

Параметры

[in] MDL

Указатель на буфер, для которого необходимо сопоставить соответствующий базовый виртуальный адрес.

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

None

Remarks

MmGetSystemAddressForMdl возвращает виртуальный адрес базового системного пространства, который сопоставляет физические страницы, описанные данным MDL.

Драйверы устройств piO вызывают эту подпрограмму для преобразования диапазона виртуальных адресов, описанного в MDL в Irp-MdlAddress>, для буфера пользователя в диапазон адресов системного пространства.

MDL должен описывать непаджируемую память. Иными словами, входной MDL должен описывать уже заблокированный буфер пользовательского пространства, возвращаемый MmProbeAndLockPages, заблокированный буфер, возвращаемый MmBuildMdlForNonPagedPool, или системную память, выделенную из непагрегированного пула, непрерывной памяти или не кэшируемой памяти.

Возвращаемый базовый адрес имеет то же смещение, что и виртуальный адрес в MDL.

Окно выдает ошибку проверка, если попытка сопоставления с системным пространством завершается ошибкой. Поэтому вместо этого следует использовать MmGetSystemAddressForMdlSafe .

Требования

Требование Значение
Минимальная версия клиента Является устаревшей. Вместо этого используйте MmGetSystemAddressForMdlSafe.
Целевая платформа Персональный компьютер
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
IRQL IRQL <= DISPATCH_LEVEL

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

MmBuildMdlForNonPagedPool

MmGetSystemAddressForMdlSafe

MmProbeAndLockPages