Freigeben über


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