Partager via


Méthode IMiniportWaveRTStreamNotification ::AllocateBufferWithNotification (portcls.h)

La AllocateAudioBufferWithNotification méthode alloue une mémoire tampon cyclique pour les données audio lorsque vous souhaitez implémenter une notification d’événement pilotée par DMA. Si vous ne souhaitez pas de notification d’événement, vous devez utiliser IMiniportWaveRTStream ::AllocateAudioBuffer.

Syntaxe

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

Paramètres

[in] NotificationCount

Spécifie le nombre de notifications souhaitées par cycle de mémoire tampon. Les valeurs valides sont 1 ou 2, où 1 indique une seule notification à la fin de la mémoire tampon cyclique et 2 indique deux notifications par cycle de mémoire tampon, une au milieu de la mémoire tampon et une à la fin.

[in] RequestedSize

Spécifie la taille demandée, en octets, de la mémoire tampon audio.

[out] AudioBufferMdl

Pointeur de sortie pour une liste de descripteurs mémoire (MDL) qui décrit la mémoire tampon audio. Ce paramètre pointe vers une variable de pointeur allouée par l’appelant dans laquelle la méthode écrit un pointeur vers le MDL.

[out] ActualSize

Pointeur de sortie pour la taille réelle, en octets, de la mémoire tampon allouée. Ce paramètre pointe vers une variable ULONG dans laquelle la méthode écrit la valeur de taille.

[out] OffsetFromFirstPage

Pointeur de sortie pour le décalage (en octets) de la mémoire tampon, à partir du début de la première page du MDL. Ce paramètre pointe vers une variable ULONG allouée par l’appelant dans laquelle la méthode écrit la valeur de décalage.

[out] CacheType

Spécifie le type de mise en cache que le client demande pour la mémoire tampon audio. Ce paramètre est une valeur d’énumération MEMORY_CACHING_TYPE

Valeur retournée

AllocateBufferWithNotification retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la méthode retourne une erreur appropriée status code. Le tableau suivant présente quelques-uns des codes d’erreur possibles status.

Code de retour Description
STATUS_UNSUCCESSFUL
Le pilote ne prend pas en charge la combinaison spécifiée d’attributs de mémoire tampon.
STATUS_INSUFFICIENT_RESOURCES
La mémoire disponible est insuffisante pour allouer la mémoire tampon.
STATUS_DEVICE_NOT_READY
Le périphérique n’est pas prêt.

Remarques

Note Les miniports pour les codecs audio haute définition Intel doivent spécifier un CacheType de MmWriteCombined pour garantir la cohérence du cache. Cela est dû au fait que le contrôleur audio haute définition Intel peut être configuré pour une opération non snoop.
 
Après avoir reçu une demande de KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION du client, le pilote de port appelle la AllocateBufferWithNotification méthode pour allouer une mémoire tampon cyclique que le pilote de port peut mapper ultérieurement à l’espace d’adressage virtuel du client. AllocateBufferWithNotification fonctionne d’une manière similaire à IMiniportWaveRTStream ::AllocateAudioBuffer. En outre, AllocateBufferWithNotification identifie au pilote de port WaveRT que la notification d’événement pilotée par DMA est souhaitée et spécifie le nombre de notifications nécessaires par cycle de la mémoire tampon cyclique.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans les systèmes d’exploitation Windows Vista et ultérieurs.
Plateforme cible Universal
En-tête portcls.h
IRQL Niveau passif.

Voir aussi

IMiniportWaveRTStream ::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE