IPortWaveRTStream::AllocatePagesForMdl-Methode (portcls.h)
Die AllocatePagesForMdl
-Methode weist eine Liste von nicht seitenfreien physischen Speicherseiten zu und gibt einen Zeiger auf eine Speicherbeschreibungsliste (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 zugewiesen werden kann. Das niedrige Ende des Adressbereichs ist implizit Null.
[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 physischen Speicherseiten beschreibt. Wenn die Methode den angeforderten Puffer nicht zuordnen kann, wird NULL-zurückgegeben.
Bemerkungen
Da der Windows-Audiostapel keinen Mechanismus zum Ausdrücken der Speicherzugriffsausrichtung für Puffer unterstützt, müssen Audiotreiber einen Cachetyp für zugeordnete Speicherpuffer auswählen, die keine plattformspezifischen Ausrichtungsanforderungen auferlegen. Anders ausgedrückt: Der vom Audiotreiber für zugeordnete Speicherpuffer verwendete Cachetyp 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 physischen Speicherseiten in der MDL sind nicht notwendigerweise im physischen Speicher zusammenhängend, aber alle fallen in den angegebenen Adressbereich.
Die Methode weist immer eine integrale Anzahl von Seiten zu. Wenn genügend Arbeitsspeicher verfügbar ist, ist die Speicherzuweisung die angeforderte Größe, die auf die nächste Seite aufgerundet wird. Andernfalls kann die Speicherzuweisung 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 die physischen Speicherseiten im Puffer zusammenhängend sein muss, muss der Treiber stattdessen IPortWaveRTStream::AllocateContiguousPagesForMdl aufrufen.
Wie die MmAllocatePagesForMdl -Funktion weist die AllocatePagesforMdl
Methode Speicherseiten zu, die gesperrt (nicht seitenlos) sind, aber nicht zugeordnet sind. Wenn der Miniporttreiber Softwarezugriff auf diesen Speicher einrichten möchte, muss der Miniporttreiber einen nachfolgenden Aufruf an IPortWaveRTStream::MapAllocatedPages durchführen, um die Seiten im Kernelmodus Adressraum zuzuordnen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows Vista und höheren Windows-Betriebssystemen. |
Zielplattform- | Universal |
Header- | portcls.h |
IRQL- | Passive Ebene |