Procesamiento de exclusión mutua en AVStream

La tercera exclusión mutua es la exclusión mutua de procesamiento. Los filtros y patillas individuales tienen sus propias exclusión mutuas de procesamiento. AVStream adquiere de forma independiente la exclusión mutua de procesamiento antes del procesamiento en el nivel de filtro y patilla, con el fin de sincronizar el acceso a las estructuras relacionadas con el procesamiento. AVStream también adquiere la exclusión mutua de procesamiento durante otras operaciones, incluidas las patillas de enlace a una sección de canalización, las operaciones de encendido de suspensión o reactivación y el cambio de descriptores. Los minidrivers pueden adquirir manualmente la exclusión mutua para realizar una operación sincrónica, como el procesamiento o la modificación del descriptor. Un minidriver debe obtener la exclusión mutua de procesamiento antes de realizar cualquier cambio que no pueda ocurrir al mismo tiempo que el procesamiento.

Al igual que los otros dos tipos de exclusión mutua, las exclusión mutuas de procesamiento no se obtienen de forma recursiva. Esto significa que si un minidriver intenta capturar la exclusión mutua de procesamiento mientras se procesa, se produce un interbloqueo.

No use la exclusión mutua de procesamiento para suspender el procesamiento durante largos períodos de tiempo. En su lugar, manipule la puerta de control de procesamiento directamente mediante las funciones KSGATEXxx .

Un subproceso que ha adquirido una exclusión mutua de procesamiento no debe intentar adquirir posteriormente la exclusión mutua del control de filtro.

Para manipular la exclusión mutua de procesamiento, use las siguientes funciones:

KsFilterAcquireProcessingMutex, KsPinAcquireProcessingMutex, KsFilterReleaseProcessingMutex, KsPinReleaseProcessingMutex