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


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

Макрос MmGetMdlPfnArra y возвращает указатель на начало массива физических номеров страниц, связанных со списком дескрипторов памяти (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.

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

Требования

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