Freigeben über


IMiniportWaveRTStreamNotification::AllocateBufferWithNotification-Methode (portcls.h)

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

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 pro Pufferzyklus benötigten Benachrichtigungen an. Gültige Werte sind 1 oder 2, wobei 1 eine einzelne Benachrichtigung am Ende des zyklischen Puffers angibt und 2 zwei Benachrichtigungen pro Pufferzyklus angibt, eine an der Mitte des Puffers und eine am Ende.

[in] RequestedSize

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

[out] AudioBufferMdl

Ausgabezeiger für eine Speicherbeschreibungsliste (MDL-), die den Audiopuffer beschreibt. Dieser Parameter verweist auf eine vom Aufrufer zugewiesene 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 Bytes. Dieser Parameter verweist auf eine ULONG-Variable, in die die Methode den Größenwert schreibt.

[out] OffsetFromFirstPage

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

[out] CacheType

Gibt den Zwischenspeicherungstyp an, den 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 Anruf erfolgreich war. Andernfalls gibt die Methode einen entsprechenden Fehlerstatuscode zurück. In der folgenden Tabelle sind einige der möglichen Fehlerstatuscodes aufgeführt.

Rückgabecode Beschreibung
STATUS_UNSUCCESSFUL
Der Treiber unterstützt nicht die angegebene Kombination von Pufferattributen.
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.

Bemerkungen

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 möglicherweise für den Nicht-Snoop-Betrieb konfiguriert ist.
 
Nachdem ein KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION Anforderung vom Client empfangen wurde, 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 AllocateBufferWithNotification den WaveRT-Porttreiber, dass die DMA-gesteuerte Ereignisbenachrichtigung gesucht wird, und gibt an, wie viele Benachrichtigungen pro Zyklus des zyklischen Puffers erforderlich sind.

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.

Siehe auch

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL-

MEMORY_CACHING_TYPE