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


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

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

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

Синтаксис

PVOID MmGetSystemAddressForMdl(
   MDL
);

Параметры

[in] MDL

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

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

Никакой

Замечания

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

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

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Устаревший. Вместо этого используйте MmGetSystemAddressForMdlSafe.
целевая платформа Настольный
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL IRQL <= DISPATCH_LEVEL

См. также

MmBuildMdlForNonPagedPool

MmGetSystemAddressForMdlSafe

mmProbeAndLockPages