Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O AVStream usa portões lógicos como um mecanismo de fluxo de controle. Cada porta lógica é representada por uma estrutura KSGATE .
O AVStream inicializa cada filtro ou pino com uma única porta AND. Um minidriver pode usar esse mecanismo para determinar quando esse objeto específico pode processar dados. Para recuperar a porta de controle de processamento de um pin, o minidriver chama KsPinGetAndGate. Para recuperar a porta de controle de processamento de um filtro, chame KsFilterGetAndGate.
Para criar novas portas lógicas, o minidriver chama KsGateInitializeAnd ou KsGateInitializeOr. Você pode usar a saída de um portão como entrada para outro portão, encaminhando assim transições de estado. Para fazer isso, forneça um parâmetro NextOrGate ou NextAndGate nessas chamadas.
Para fechar uma entrada existente em um portão lógico, você pode chamar KsGateTurnInputOff. O minidriver pode executar esta chamada para parar e fechar um pino ativo ou suspender o processamento por tempo indeterminado.
Da mesma forma, chame KsGateTurnInputOn para abrir uma entrada existente em um portão específico.
Quando um thread está pronto para ser processado, ele tenta capturar a entrada na porta AND que controla o processamento do objeto de processamento. Para fazer isso, o minidriver chama KsGateCaptureThreshold.
Se a porta AND estiver aberta, o AVStream desativa uma entrada no portão e o processamento começa. Como a porta agora está fechada durante o processamento, nenhum outro thread pode capturar a entrada da porta. Somente um thread pode processar dados de cada vez.
Para verificar o status de um portão sem modificá-lo, o minidriver pode chamar KsGateGetStateUnsafe. Observe, no entanto, que essa função não lida com a sincronização.
Para excluir um portão lógico, chame KsGateTerminateAnd ou KsGateTerminateOr. A porta que você está excluindo deve estar no início de uma cadeia de portas.
Para anexar um pino como entrada a uma porta lógica e então conectar a mesma porta lógica como entrada ao portão AND de um filtro, chame KsPinAttachAndGate ou KsPinAttachOrGate.
Determinando o status do portão
Para um portão AND, o valor do membro Count da estrutura KSGATE é um menos o número de entradas desativadas :
Contagem = 1 – (número de entradas desativadas )
Se esse valor for menor ou igual a zero, o portão será fechado. Se esse valor for maior que zero, a porta estará aberta.
Para um portão OR, o valor do membro Count de KSGATE é o número de entradas no portão:
Count = ( número de entradas)
Se esse valor for igual a zero, a porta será fechada. Se Count for maior que zero, o portão estará aberto.
Os portões AND têm um intervalo de contagem válido de um ou menos; Os portões OR têm um intervalo de contagem válido de zero ou superior. Não defina Contagem como valores inválidos; O AVStream não verifica se um minidriver definiu a porta como um estado válido.