Méthode IMiniportWaveCycliqueStream ::GetPosition (portcls.h)
La GetPosition
méthode obtient la position actuelle du flux.
Syntaxe
NTSTATUS GetPosition(
[out] PULONG Position
);
Paramètres
[out] Position
Pointeur de sortie pour la valeur de position. Ce paramètre pointe vers une variable allouée par l’appelant dans laquelle la méthode écrit la position d’octet actuelle du flux.
Valeur retournée
GetPosition
retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la méthode retourne un code d’erreur approprié.
Remarques
GetPosition
indique la position de lecture ou d’enregistrement actuelle du flux. La position est exprimée sous la forme d’un décalage d’octets par rapport au début de la mémoire tampon DMA et représente la meilleure estimation par le pilote miniport de la position d’octet des données actuellement dans la DAC ou L’ADC.
La position est égale à zéro immédiatement après l’initialisation du flux. Une transition vers l’état KSSTATE_STOP (voir KSSTATE) réinitialise la position à zéro. Lorsque le flux est arrêté par une transition de KSSTATE_RUN à KSSTATE_PAUSE ou KSSTATE_ACQUIRE, la position se fige. Il se dégele lorsque le flux passe de KSSTATE_PAUSE ou de KSSTATE_ACQUIRE à KSSTATE_RUN.
GetPosition
spécifie la position en tant que décalage dans la mémoire tampon cyclique. Lorsque la position atteint la fin de la mémoire tampon cyclique, elle encapsule jusqu’au début de la mémoire tampon. Par conséquent, la position ne dépasse jamais la taille de la mémoire tampon.
Notez que la valeur de décalage récupérée par un GetPosition
appel est l’une des suivantes :
-
Pour un flux de rendu, la
GetPosition
méthode récupère la position de lecture, qui est le décalage d’octets de l’exemple en cours de lecture par le biais de la DAC et transmis via la prise du haut-parleur. -
Pour un flux de capture, la
GetPosition
méthode récupère la position de l’enregistrement, qui est le décalage d’octets du dernier échantillon à recevoir via la prise du microphone et capturé par l’ADC.
Certains matériels audio contiennent un registre de position pour effectuer le suivi du décalage d’octets de l’exemple actuellement dans chaque DAC ou ADC, auquel cas la GetPosition
méthode récupère simplement le contenu du registre de position pour le flux approprié. D’autres matériels audio peuvent uniquement fournir au pilote des pointeurs DMA dans les mémoires tampons audio, auquel cas la GetPosition
méthode doit fournir une meilleure estimation du décalage d’octets dans la DAC ou ADC en fonction de la position actuelle de la DMA et des retards de mise en mémoire tampon internes à l’appareil.
Le matériel audio qui met en mémoire tampon en interne une partie d’un flux de lecture ou de capture peut rendre la lecture d’une position précise plus difficile à obtenir. Dans ce cas, le pilote doit estimer la position actuelle aussi précisément que possible. Par exemple, si un périphérique audio préréférence le flux de lecture dans une mémoire tampon interne, le pilote peut avoir besoin de prendre en compte la taille de la mémoire tampon et les informations de minutage afin d’estimer correctement la position de lecture.
Le pilote de port WaveCyclique implémente un gestionnaire de propriétés pour KSPROPERTY_AUDIO_POSITION. Ce gestionnaire de propriétés appelle la GetPosition
méthode pour obtenir la position de lecture ou d’enregistrement actuelle à partir du pilote miniport. Pour plus d’informations, consultez Audio Position Property.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | portcls.h (include Portcls.h) |
IRQL | <=DISPATCH_LEVEL |