Macro MmGetMdlPfnArray (wdm.h)

La macro MmGetMdlPfnArray retourne un pointeur vers le début du tableau des numéros de page physiques associés à une liste de descripteurs mémoire (MDL).

Syntaxe

PPFN_NUMBER MmGetMdlPfnArray(
  _In_ PMDL Mdl
);

Paramètres

Mdl

Pointeur vers une MDL.

Valeur retournée

MmGetMdlPfnArray retourne un pointeur vers le début du tableau des numéros de page physiques associés à la MDL.

Remarques

Définition de macro :

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

Le nombre d’entrées dans le tableau est ADDRESS_AND_SIZE_TO_SPAN_PAGES(MmGetMdlVirtualAddress(Mdl), MmGetMdlByteCount(Mdl)).

Chaque élément de tableau est une valeur entière de type PFN_NUMBER, qui est définie dans le fichier d’en-tête Wdm.h comme suit :

typedef ULONG PFN_NUMBER, *PPFN_NUMBER;

La modification du contenu du tableau peut entraîner des problèmes système subtils difficiles à diagnostiquer. Nous vous recommandons de ne pas lire ou modifier le contenu de ce tableau.

Pour la mémoire paginable, le contenu du tableau est valide uniquement pour une mémoire tampon verrouillée avec MmProbeAndLockPages.

Pour le pool sans pagination, le contenu du tableau est valide uniquement pour une MDL mise à jour avec MmBuildMdlForNonPagedPool, MmAllocatePagesForMdlEx ou MmAllocatePagesForMdll.

Pour plus d’informations sur les DLL, consultez Utilisation de MDL.

Configuration requise

Condition requise Valeur
En-tête wdm.h (include Wdm.h)
IRQL N’importe quel niveau
Règles de conformité DDI MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)