Макрос 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) |