IPortWaveRTStream::AllocateContiguousPagesForMdl-Methode (portcls.h)

Die AllocateContiguousPagesForMdl -Methode ordnet eine Liste zusammenhängender, nicht ausseitiger physischer Speicherseiten zu und gibt einen Zeiger auf eine Speicherdeskriptorliste (Memory Descriptor List, MDL) zurück, die diese beschreibt.

Syntax

PMDL AllocateContiguousPagesForMdl(
  [in] PHYSICAL_ADDRESS LowAddress,
  [in] PHYSICAL_ADDRESS HighAddress,
  [in] SIZE_T           TotalBytes
);

Parameter

[in] LowAddress

Gibt das untere Ende des Adressbereichs an, aus dem der Speicher für die MDL zugeordnet werden kann.

[in] HighAddress

Gibt das obere Ende des Adressbereichs an, aus dem der Speicher für die MDL zugeordnet werden kann.

[in] TotalBytes

Gibt die Gesamtzahl der Bytes an, die für die MDL zugeordnet werden sollen. Bei dieser Methode wird immer eine integrale Anzahl von Speicherseiten zugeordnet.

Rückgabewert

AllocateContiguousPagesForMdl gibt einen Zeiger auf eine MDL (PMDL) zurück, die eine Liste der Physischen Speicherseiten beschreibt. Wenn die Methode den angeforderten Puffer nicht zuordnen kann, gibt sie NULL zurück.

Hinweise

Der Treiber ruft diese Methode auf, um einen Block physisch zusammenhängender Speicherseiten zuzuordnen. Alle Seiten des physischen Arbeitsspeichers in der MDL liegen innerhalb des Adressbereichs, der durch die Parameter LowAddress und HighAddress angegeben wird. Wenn genügend Arbeitsspeicher verfügbar ist, entspricht die Speicherbelegung der angeforderten Größe, die auf die nächste Seite aufgerundet wird. Andernfalls schlägt der Aufruf fehl.

Nachdem ein System einige Zeit lang ausgeführt wurde, neigt der Pool des Systems des nicht auslagerten Arbeitsspeichers dazu, fragmentiert zu werden, was die Wahrscheinlichkeit erhöht, dass eine Anforderung zur Zuweisung eines großen Blocks zusammenhängenden physischen Speichers fehlschlägt. Wenn der DMA-Controller des Audiogeräts keine zusammenhängenden physischen Speicherseiten erfordert, muss der Treiber stattdessen IPortWaveRTStream::AllocatePagesForMdl aufrufen. Im Gegensatz zu AllocateContiguousPagesForMdlist die AllocatePagesForMdl-Methode nicht von der Speicherfragmentierung betroffen.

Die AllocateContiguousPagesforMdl -Methode ordnet Speicherseiten zu, die gesperrt (nicht auslagert), aber nicht zugeordnet sind. Wenn der Miniporttreiber Softwarezugriff auf diesen Speicher benötigt, muss der Miniporttreiber einen nachfolgenden Aufruf von IPortWaveRTStream::MapAllocatedPages durchführen, um die Seiten dem Kernelmodus-Adressraum zuzuordnen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Windows-Betriebssystemen.
Zielplattform Universell
Header portcls.h
IRQL Passive Ebene

Weitere Informationen

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages