Partager via


Traitement du mutex dans AVStream

Le troisième mutex est le mutex de traitement. Les filtres et les broches individuels ont leurs propres mutex de traitement. AVStream acquiert indépendamment le mutex de traitement avant le traitement au niveau du filtre et de la broche, afin de synchroniser l’accès aux structures liées au traitement. AVStream acquiert également le mutex de traitement pendant d’autres opérations, notamment la liaison de broches à une section de canal, les opérations d’alimentation en veille ou de veille et la modification des descripteurs. Les minidrivers peuvent acquérir manuellement le mutex pour effectuer une opération synchrone, telle que le traitement ou la modification du descripteur. Un minidriver doit obtenir le mutex de traitement avant d’effectuer toute modification qui ne peut pas se produire en même temps que le traitement.

Comme pour les deux autres types de mutex, le traitement des mutex n’est pas obtenu de manière récursive. Cela signifie que si un minidriver tente de récupérer le mutex de traitement pendant le traitement, un interblocage se produit.

N’utilisez pas le mutex de traitement pour suspendre le traitement pendant de longues périodes. Au lieu de cela, manipulez directement la porte de contrôle de traitement à l’aide des fonctions KSGATEXxx .

Un thread qui a acquis un mutex de traitement ne doit pas tenter par la suite d’acquérir le mutex de contrôle de filtre.

Pour manipuler le mutex de traitement, utilisez les fonctions suivantes :

KsFilterAcquireProcessingMutex, KsPinAcquireProcessingMutex, KsFilterReleaseProcessingMutex, KsPinReleaseProcessingMutex