Méthode IMiniportWaveRTInputStream ::GetReadPacket (portcls.h)
Retourne des informations sur les données capturées.
Syntaxe
NTSTATUS GetReadPacket(
[out] ULONG *PacketNumber,
[out] DWORD *Flags,
[out] ULONG64 *PerformanceCounterValue,
[out] BOOL *MoreData
);
Paramètres
[out] PacketNumber
Retourne le numéro de paquet par rapport au début de la capture.
[out] Flags
Réservé pour un usage futur. Doit avoir la valeur 0.
[out] PerformanceCounterValue
Retourne la valeur du compteur de performances correspondant à l’instant d’échantillonnage du premier échantillon du paquet.
[out] MoreData
Retourne TRUE si d’autres données sont prêtes immédiatement. Le système d’exploitation peut éventuellement appeler immédiatement cette routine après avoir traité le paquet pour obtenir les informations de paquet suivantes. Si le pilote retourne FALSE, la capture fonctionne en temps réel.
Valeur retournée
GetReadPacket
retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la fonction retourne une erreur appropriée status code.
STATUS_DEVICE_NOT_READY : le pilote retourne cette erreur si aucune nouvelle donnée n’est disponible.
Remarques
Avant de lire les données audio capturées à partir de la mémoire tampon WaveRT, le système d’exploitation appelle cette routine pour obtenir des informations sur les données disponibles.
Le numéro de paquet identifie un paquet dans le flux. Cette opération est réinitialisée à zéro lorsque le flux est en KSSTATE_STOP. Le nombre progresse avec chaque mémoire tampon capturée. À partir du numéro de paquet, le système d’exploitation peut dériver l’emplacement du paquet dans la mémoire tampon WaveRT et peut également dériver la position du flux par rapport au début du flux.
La taille du paquet est la taille de mémoire tampon WaveRT divisée par notificationCount passée à IMiniportWaveRTStreamNotification ::AllocateBufferWithNotification. Le système d’exploitation peut appeler cette routine à tout moment. En fonctionnement normal, le système d’exploitation appelle cette routine après que le pilote a définit l’événement de notification de mémoire tampon ou après qu’un appel précédent retourne true pour MoreData. Lorsque le système d’exploitation appelle cette routine, le pilote peut supposer que le système d’exploitation a terminé la lecture de tous les paquets précédents. Si le matériel a capturé suffisamment de données, le pilote peut immédiatement faire exploser le paquet complet suivant dans la mémoire tampon WaveRT et définir à nouveau l’événement de mémoire tampon. En cas de dépassement de capacité de capture (lorsque le système d’exploitation ne lit pas les données assez rapidement), le pilote audio peut supprimer ou remplacer certaines données audio. Le pilote audio supprime ou remplace d’abord les données les plus anciennes. Le pilote audio peut continuer à faire avancer son compteur de paquets interne même si le système d’exploitation n’a peut-être pas lu les données.
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 |