Partilhar via


Processando Mutex no AVStream

O terceiro mutex é o mutex de processamento. Filtros e pinos individuais têm os seus próprios mutexes de processamento. O AVStream adquire independentemente o mutex de processamento antes do processamento ao nível do filtro e do pino, para sincronizar o acesso às estruturas relacionadas ao processamento. AVStream também adquire o mutex de processamento durante outras operações, incluindo a vinculação de pinos a uma seção de tubo, operações de energia em suspensão ou ativação e alteração de descritores. Os minidrivers podem adquirir manualmente o mutex para executar uma operação síncrona, como processamento ou modificação do descritor. Um minidriver deve obter o mutex de processamento antes de fazer qualquer alteração que não possa acontecer ao mesmo tempo que o processamento.

Como os outros dois tipos de mutexes, os mutexes de processamento não são obtidos recursivamente. Isso significa que, se um minidriver tentar pegar o mutex de processamento durante o processamento, ocorrerá um impasse.

Não use o mutex de processamento para suspender o processamento por longos períodos de tempo. Em vez disso, manipule a porta de controle de processamento diretamente usando as funções KSGATEXxx.

Um thread que adquiriu um mutex de processamento não deve tentar posteriormente adquirir o mutex de controle de filtro.

Para manipular o mutex de processamento, utilize as seguintes funções:

KsFilterAcquireProcessingMutex, KsPinAcquireProcessingMutex, KsFilterReleaseProcessingMutex, KsPinReleaseProcessingMutex