Partager via


IMiniportWaveRTStreamNotification ::AllocateBufferWithNotification, méthode (portcls.h)

La méthode AllocateAudioBufferWithNotification 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 notification unique à 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 de 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 dans 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 de retour

AllocateBufferWithNotification retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la méthode retourne un code d’état d’erreur approprié. Le tableau suivant présente certains des codes d’état d’erreur possibles.

Retourner le code 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
L’appareil n’est pas prêt.

Remarques

Remarque Miniports pour les codecs Audio Intel Haute définition doivent spécifier un CacheType de MmWriteCombined pour garantir la cohérence du cache. Cela est dû au fait que le contrôleur audio Intel High Definition peut être configuré pour l’opération non snoop.
 
Après avoir reçu une requête KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION du client, le pilote de port appelle la méthode AllocateBufferWithNotification 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 de 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 par cycle de la mémoire tampon cyclique nécessaire.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows Vista et les systèmes d’exploitation Windows ultérieurs.
plateforme cible Universel
d’en-tête portcls.h
IRQL Niveau passif.

Voir aussi

IMiniportWaveRTStream ::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE