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


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

Макрос MmGetMdlPfnArray возвращает указатель на начало массива физических номеров страниц, связанных со списком дескрипторов памяти (MDL).

Синтаксис

PPFN_NUMBER MmGetMdlPfnArray(
  _In_ PMDL Mdl
);

Параметры

Mdl

Указатель на MDL.

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

MmGetMdlPfnArray возвращает указатель на начало массива физических номеров страниц, связанных с MDL.

Комментарии

MmGetMdlPfnArray возвращает указатель на начало массива физических номеров страниц, связанных с MDL.

Определение макроса:

#define MmGetMdlPfnArray(Mdl) ((PPFN_NUMBER)(Mdl + 1))

Количество записей в массиве равно ADDRESS_AND_SIZE_TO_SPAN_PAGES(MmGetMdlVirtualAddress(Mdl), MmGetMdlByteCount(Mdl)).

Каждый элемент массива является целочисленным значением типа PFN_NUMBER, которое определяется в файле заголовка Wdm.h следующим образом:

typedef ULONG PFN_NUMBER, *PPFN_NUMBER;

Изменение содержимого массива может привести к незначительным системным проблемам, которые трудно диагностировать. Не рекомендуется читать и не изменять содержимое этого массива.

Для страничной памяти содержимое массива допустимо только для буфера, заблокированного с помощью MmProbeAndLockPages.

Для непагрегированного пула содержимое массива допустимо только для MDL, обновленного с помощью MmBuildMdlForNonPagedPool, MmAllocatePagesForMdlEx или MmAllocatePagesForMdl.

Дополнительные сведения о списках MDL см. в разделе Использование многомерных выражений.

Требования

Требование Значение
Заголовок wdm.h (включая Wdm.h)
IRQL Любой уровень
Правила соответствия DDI MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)