Partager via


IMiniportWaveRTOutputStream ::GetPacketCount, méthode (portcls.h)

GetPacketCount retourne le nombre (de base 1) de paquets complètement transférés de la mémoire tampon WaveRT vers le matériel.

Syntaxe

NTSTATUS GetPacketCount(
  [out] ULONG *pPacketCount
);

Paramètres

[out] pPacketCount

pPacketCount retourne le nombre de paquets complètement transférés de la mémoire tampon WaveRT vers le matériel.

Valeur retournée

GetPacketCount retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la fonction retourne une erreur appropriée status code.

Remarques

À partir du nombre de paquets, le système d’exploitation peut dériver la position du flux des paquets qu’il écrit dans la mémoire tampon WaveRT. Le système d’exploitation peut également dériver la position de la mémoire tampon WaveRT du paquet suivant à écrire dans la mémoire tampon WaveRT. Pour les pilotes WaveRT, le pilote signale un événement de notification unique lors du transfert des données de chaque paquet de la mémoire tampon WaveRT. Par conséquent, l’événement seul ne peut pas indiquer quel paquet dans la mémoire tampon WaveRT est transféré. En fonctionnement normal, ce n’est pas un problème, mais dans les cas de sous-flux, la correction est plus facilement obtenue en interrogeant le nombre de paquets à partir duquel le système d’exploitation peut déterminer le paquet à écrire ensuite.

Le PacketCount retourné indique le nombre (basé sur 1) de paquets complètement transférés de la mémoire tampon WaveRT vers le matériel. À partir de là, le système d’exploitation peut déterminer le nombre de base 0 du paquet en cours de transfert et s’assurer qu’il écrit avant ce paquet. Par exemple, si le nombre de paquets est de 5, 5 paquets ont été complètement transférés. Autrement dit, les paquets 0-4 ont été complètement transférés. Par conséquent, le paquet 5 est en cours et le système d’exploitation doit écrire le paquet 6. Si le nombre de notifications pour la mémoire tampon WaveRT est égal à 2, le paquet 6 est au décalage 0 dans la mémoire tampon WaveRT (car 6 modulo 2 est 0, et 0 fois la taille du paquet est 0).

Le système d’exploitation peut obtenir cette propriété à tout moment. Toutefois, elle obtient généralement cette propriété uniquement périodiquement ou après que le pilote retourne une erreur de flux de données (STATUS_DATA_LATE_ERROR, STATUS_DATA_OVERRUN) à partir de SetWritePacket() afin de se resynchroniser avec le pilote.

Le pilote doit rétablir le nombre de paquets à 0 lorsque le flux est en KSSTATE_STOP.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 10 et versions ultérieures.
Plateforme cible Windows
En-tête portcls.h
IRQL Niveau passif

Voir aussi

IMiniportWaveRTOutputStream