MmGetMdlPfnArray-Makro (wdm.h)

Das MmGetMdlPfnArray-Makro gibt einen Zeiger auf den Anfang des Arrays von physischen Seitenzahlen zurück, die einer MDL (Memory Descriptor List) zugeordnet sind.

Syntax

PPFN_NUMBER MmGetMdlPfnArray(
  _In_ PMDL Mdl
);

Parameter

Mdl

Ein Zeiger auf eine MDL.

Rückgabewert

MmGetMdlPfnArray gibt einen Zeiger auf den Anfang des Arrays der physischen Seitenzahlen zurück, die der MDL zugeordnet sind.

Hinweise

Makrodefinition:

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

Die Anzahl der Einträge im Array ist ADDRESS_AND_SIZE_TO_SPAN_PAGES(MmGetMdlVirtualAddress(Mdl), MmGetMdlByteCount(Mdl)).

Jedes Arrayelement ist ein ganzzahliger Wert vom Typ PFN_NUMBER, der in der Wdm.h-Headerdatei wie folgt definiert wird:

typedef ULONG PFN_NUMBER, *PPFN_NUMBER;

Das Ändern des Inhalts des Arrays kann zu subtilen Systemproblemen führen, die schwer zu diagnostizieren sind. Es wird empfohlen, den Inhalt dieses Arrays nicht zu lesen oder zu ändern.

Für auslagerungsfähigen Arbeitsspeicher ist der Inhalt des Arrays nur für einen Puffer gültig, der mit MmProbeAndLockPages gesperrt ist.

Für nicht auslagerte Pools gilt der Inhalt des Arrays nur für eine MDL, die mit MmBuildMdlForNonPagedPool, MmAllocatePagesForMdlEx oder MmAllocatePagesForMdl aktualisiert wurde.

Weitere Informationen zu MDLs finden Sie unter Verwenden von MDLs.

Anforderungen

Anforderung Wert
Header wdm.h (einschließen von Wdm.h)
IRQL Beliebige Ebene
DDI-Complianceregeln MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)