IMiniportWaveRTStreamNotification::AllocateBufferWithNotification-Methode (portcls.h)

Die AllocateAudioBufferWithNotification -Methode weist einen zyklischen Puffer für Audiodaten zu, wenn Sie DMA-gesteuerte Ereignisbenachrichtigungen implementieren möchten. Wenn Sie keine Ereignisbenachrichtigung wünschen, müssen Sie IMiniportWaveRTStream::AllocateAudioBuffer verwenden.

Syntax

NTSTATUS AllocateBufferWithNotification(
  [in]  ULONG               NotificationCount,
  [in]  ULONG               RequestedSize,
  [out] PMDL                *AudioBufferMdl,
  [out] ULONG               *ActualSize,
  [out] ULONG               *OffsetFromFirstPage,
  [out] MEMORY_CACHING_TYPE *CacheType
);

Parameter

[in] NotificationCount

Gibt die Anzahl der gewünschten Benachrichtigungen pro Pufferzyklus an. Gültige Werte sind 1 oder 2, wobei 1 eine einzelne Benachrichtigung am Ende des zyklischen Puffers und 2 zwei Benachrichtigungen pro Pufferzyklus angibt, eine am Mittleren Punkt des Puffers und eine am Ende des Puffers.

[in] RequestedSize

Gibt die angeforderte Größe des Audiopuffers in Bytes an.

[out] AudioBufferMdl

Ausgabezeiger für eine Speicherdeskriptorliste (Memory Descriptor List, MDL), die den Audiopuffer beschreibt. Dieser Parameter verweist auf eine vom Aufrufer zugeordnete Zeigervariable, in die die Methode einen Zeiger auf die MDL schreibt.

[out] ActualSize

Ausgabezeiger für die tatsächliche Größe des zugeordneten Puffers in Byte. Dieser Parameter verweist auf eine ULONG-Variable, in die die Methode den Größenwert schreibt.

[out] OffsetFromFirstPage

Ausgabezeiger für den Offset (in Bytes) des Puffers vom Anfang der ersten Seite in der MDL. Dieser Parameter verweist auf eine vom Aufrufer zugeordnete ULONG-Variable, in die die Methode den Offsetwert schreibt.

[out] CacheType

Gibt den Typ der Zwischenspeicherung an, die der Client für den Audiopuffer anfordert. Dieser Parameter ist ein MEMORY_CACHING_TYPE-Enumerationswert .

Rückgabewert

AllocateBufferWithNotification gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich war. Andernfalls gibt die Methode einen geeigneten Fehler status Code zurück. In der folgenden Tabelle sind einige der möglichen Fehler status Codes aufgeführt.

Rückgabecode Beschreibung
STATUS_UNSUCCESSFUL
Der Treiber unterstützt die angegebene Kombination von Pufferattributen nicht.
STATUS_INSUFFICIENT_RESOURCES
Es ist nicht genügend Arbeitsspeicher verfügbar, um den Puffer zuzuweisen.
STATUS_DEVICE_NOT_READY
Das Gerät ist nicht bereit.

Hinweise

Hinweis Miniports für Intel High Definition Audio Codecs müssen einen CacheType von MmWriteCombined angeben, um die Cachekohärenz sicherzustellen. Dies liegt daran, dass der Intel High Definition Audio Controller für den Nicht-Snoop-Betrieb konfiguriert werden kann.
 
Nach dem Empfang einer KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION-Anforderung vom Client ruft der Porttreiber die AllocateBufferWithNotification -Methode auf, um einen zyklischen Puffer zuzuweisen, den der Porttreiber später dem virtuellen Adressraum des Clients zuordnen kann. AllocateBufferWithNotification funktioniert ähnlich wie IMiniportWaveRTStream::AllocateAudioBuffer. Darüber hinaus identifiziert der WaveRT-Porttreiber, AllocateBufferWithNotification dass eine DMA-gesteuerte Ereignisbenachrichtigung gewünscht wird, und gibt an, wie viele Benachrichtigungen pro Zyklus des zyklischen Puffers erforderlich sind.

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

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE