Freigeben über


IPortWaveRTStream::AllocatePagesForMdl-Methode (portcls.h)

Die AllocatePagesForMdl -Methode weist eine Liste von nicht ausgestellten physischen Speicherseiten zu und gibt einen Zeiger auf eine Speicherdeskriptorliste (Memory Descriptor List, MDL) zurück, die sie beschreibt.

Syntax

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

Parameter

[in] HighAddress

Gibt das high end des Adressbereichs an, aus dem der Speicher für die MDL zugeordnet werden kann. Das untere Ende des Adressbereichs ist implizit 0.

[in] TotalBytes

Gibt die Gesamtanzahl der Bytes an, die für die MDL zugewiesen werden sollen. Diese Methode weist immer eine integrale Anzahl von Speicherseiten zu.

Rückgabewert

AllocatePagesforMdl gibt einen Zeiger auf eine MDL zurück, die eine Liste der Seiten des physischen Arbeitsspeichers beschreibt. Wenn die Methode den angeforderten Puffer nicht zuordnen kann, gibt sie NULL zurück.

Hinweise

Da der Windows-Audiostapel keinen Mechanismus zum Ausdrücken von Speicherzugriffsausrichtungsanforderungen für Puffer unterstützt, müssen Audiotreiber einen Zwischenspeichertyp für zugeordnete Speicherpuffer auswählen, der keine plattformspezifischen Ausrichtungsanforderungen erzwingt. Anders ausgedrückt: Der Vom Audiotreiber für zugeordnete Speicherpuffer verwendete Zwischenspeichertyp darf keine Annahmen über die Speicherausrichtungsanforderungen für eine bestimmte Plattform treffen.

Der Treiber ruft diese Methode auf, um Arbeitsspeicher zuzuweisen, der dem Benutzer- oder Kernelmodus zugeordnet werden kann. Die Seiten des physischen Arbeitsspeichers in der MDL sind nicht unbedingt im physischen Arbeitsspeicher zusammenhängend, aber sie liegen alle innerhalb des angegebenen Adressbereichs.

Die -Methode weist immer eine integrale Anzahl von Seiten zu. Wenn genügend Arbeitsspeicher verfügbar ist, entspricht die Speicherzuordnung der angeforderten Größe, die auf die nächste Seite gerundet wird. Andernfalls kann die Speicherbelegung kleiner als die angeforderte Größe sein. Der Aufrufer muss überprüfen, wie viele Bytes tatsächlich zugeordnet sind.

Wenn der DMA-Controller des Audiogeräts erfordert, dass die physischen Speicherseiten im Puffer zusammenhängend sind, muss der Treiber stattdessen IPortWaveRTStream::AllocateContiguousPagesForMdl aufrufen.

Wie die MmAllocatePagesForMdl-Funktion ordnet die AllocatePagesforMdl Methode Speicherseiten zu, die gesperrt (nicht auslagert), aber nicht zugeordnet sind. Wenn der Miniporttreiber den Softwarezugriff auf diesen Speicher einrichten möchte, muss der Miniporttreiber einen nachfolgenden Aufruf von IPortWaveRTStream::MapAllocatedPages ausführen, um die Seiten dem Kernelmodus-Adressraum zuzuordnen.

Anforderungen

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

Weitere Informationen

IPortWaveRTStream

IPortWaveRTStream::AllocateContiguousPagesForMdl

IPortWaveRTStream::MapAllocatedPages