IMiniportWaveRTOutputStream ::GetPacketCount, méthode (portcls.h)
GetPacketCount retourne le nombre (basé sur 1) de paquets complètement transférés à partir de la mémoire tampon WaveRT dans le matériel.
Syntaxe
NTSTATUS GetPacketCount(
[out] ULONG *pPacketCount
);
Paramètres
[out] pPacketCount
pPacketCount retourne le nombre de paquets complètement transférés à partir de la mémoire tampon WaveRT dans le matériel.
Valeur de retour
GetPacketCount
retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la fonction retourne un code d’état d’erreur approprié.
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 pour écrire dans la mémoire tampon WaveRT. Pour les pilotes WaveRT, le pilote signale un événement de notification unique, car il transfère les 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 en cours de transfert. Dans une opération normale, 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.
PacketCount retourné indique le nombre (basé sur 1) de paquets complètement transférés à partir de la mémoire tampon WaveRT dans le matériel. À partir de cela, le système d’exploitation peut déterminer le nombre basé sur 0 du paquet en cours de transfert et s’assurer qu’il écrit avant ce paquet. Par exemple, si le nombre de paquets est égal à 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 2, le paquet 6 est à décalage 0 dans la mémoire tampon WaveRT (car 6 modulo 2 est 0 et 0 fois que 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 régulièrement ou après que le pilote retourne une erreur de flux de données (STATUS_DATA_LATE_ERROR, STATUS_DATA_OVERRUN) de SetWritePacket() afin de resynchroniser avec le pilote.
Le pilote doit réinitialiser le nombre de paquets à 0 lorsque le flux se trouve dans KSSTATE_STOP.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible dans Windows 10 et versions ultérieures. |
plateforme cible | Windows |
d’en-tête | portcls.h |
IRQL | Niveau passif |