mmGetMdlPfnArray 宏 (wdm.h)

MmGetMdlPfnArray 宏返回指向与内存描述符列表 (MDL) 关联的物理页面编号数组开头位置的指针。

语法

PPFN_NUMBER MmGetMdlPfnArray(
  _In_ PMDL Mdl
);

参数

Mdl

指向 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 锁定的缓冲区有效。

对于非分页池,该数组的内容仅对使用 MmBuildMdlForNonPagedPoolMmAllocatePagesForMdlExMmAllocatePagesForMdl 更新的 MDL 有效。

有关 MDL 的详细信息,请参阅使用 MDL

要求

要求
Header wdm.h (包括 Wdm.h)
IRQL 任何级别
DDI 符合性规则 MdlAfterReqCompletedIntIoctlA (kmdf) MdlAfterReqCompletedIoctlA (kmdf) MdlAfterReqCompletedReadA (kmdf) MdlAfterReqCompletedWriteA (kmdf)