Verarbeiten von Mutex in AVStream
Der dritte Mutex ist der Verarbeitungsmutex. Einzelne Filter und Pins verfügen über eigene Verarbeitungsmutexe. AVStream erfasst den Verarbeitungsmutex unabhängig vor der Verarbeitung auf Filter- und Pinebene, um den Zugriff auf verarbeitungsbezogene Strukturen zu synchronisieren. AVStream erfasst den Verarbeitungsmutex auch während anderer Vorgänge, z. B. bindungspins an einen Pipeabschnitt, Standby- oder Aktivierungsvorgänge und Ändern von Deskriptoren. Minidriver können den Mutex manuell abrufen, um einen synchronen Vorgang auszuführen, z. B. Verarbeitung oder Deskriptoränderung. Ein Minidriver sollte den Verarbeitungsmutex abrufen, bevor er Änderungen vornimmt, die nicht gleichzeitig mit der Verarbeitung erfolgen können.
Wie die beiden anderen Arten von Mutexen werden die Verarbeitungsmutexe nicht rekursiv erhalten. Dies bedeutet, dass ein Deadlock auftritt, wenn ein Minidriver versucht, den Verarbeitungsmutex während der Verarbeitung zu greifen.
Verwenden Sie den Verarbeitungsmutex nicht, um die Verarbeitung für längere Zeit auszusetzen. Bearbeiten Sie stattdessen das Verarbeitungssteuerungsgate direkt mithilfe der KSGATEXxx-Funktionen .
Ein Thread, der einen Verarbeitungsmutex erworben hat, sollte anschließend nicht versuchen, den Mutex des Filtersteuerelements zu erhalten.
Verwenden Sie zum Bearbeiten des Verarbeitungsmutex die folgenden Funktionen:
KsFilterAcquireProcessingMutex, KsPinAcquireProcessingMutex, KsFilterReleaseProcessingMutex, KsPinReleaseProcessingMutex
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für