Estados do módulo de um driver de filtro
Um driver de filtro NDIS deve dar suporte aos seguintes estados operacionais para cada módulo de filtro (instância de um driver de filtro) que o driver gerencia:
Desanexado
anexação
Em Pausa
Reinicialização
Em execução
Pausando
A figura a seguir mostra as relações entre esses estados.
O seguinte define os estados do módulo de filtro:
Desanexado
O estado Desanexado é o estado inicial de um módulo de filtro. Quando um módulo de filtro está nesse estado, o NDIS pode chamar a função FilterAttach do driver de filtro para anexar o módulo de filtro à pilha de driver. Quando o NDIS chama a função FilterAttach de um driver de filtro, o módulo de filtro entra no estado Anexação. Se a operação de anexação falhar, o módulo de filtro retornará ao estado Desanexado. Quando o módulo está no estado Pausado e o NDIS chama a função FilterDetach , o módulo retorna ao estado Desanexado.
anexação
Quando um módulo de filtro está no estado Anexando , um driver de filtro se prepara para anexar o módulo à pilha de driver. Após a conclusão da preparação do módulo de filtro, o módulo de filtro entra no estado Pausado. Se ocorrer uma falha (por exemplo, porque os recursos necessários não estão disponíveis), o módulo de filtro retornará ao estado Desanexado.
Pausado
Quando um módulo de filtro está no estado Pausado , o módulo de filtro não executa operações de envio ou recebimento. Quando um módulo de filtro está no estado Anexando e FilterAttach é bem-sucedido, o módulo de filtro entra no estado Pausado . Quando um módulo de filtro está no estado Pausando e a operação de pausa é concluída, o módulo de filtro entra no estado Pausado . Quando um módulo de filtro está no estado Pausado e o NDIS chama a função FilterRestart do driver de filtro, o módulo de filtro entra no estado Reiniciar . Quando um módulo de filtro está no estado Pausado e o NDIS chama o manipulador FilterDetach do driver, o módulo de filtro entra no estado Desanexado .
Reiniciar
No estado Reinicialização , um driver de filtro conclui todas as operações necessárias para reiniciar as operações de envio e recebimento de um módulo de filtro. Quando um módulo de filtro está no estado Pausado e o NDIS chama a função FilterRestart do driver, um módulo de filtro entra no estado Reiniciando. Se a reinicialização falhar, o módulo de filtro retornará ao estado Pausado. Se a reinicialização for bem-sucedida, o módulo de filtro entrará no estado Em execução.
Em execução
No estado Em execução , um driver de filtro executa o processamento normal de envio e recebimento para um módulo de filtro. Quando o módulo de filtro está no estado Reiniciando e o driver está pronto para executar operações de envio e recebimento, o módulo de filtro entra no estado Em execução.
Pausando
No estado Pausando , um driver de filtro conclui todas as operações necessárias para interromper as operações de envio e recebimento de um módulo de filtro. O driver de filtro deve aguardar a conclusão de todas as solicitações de envio pendentes e para que o NDIS retorne todas as indicações de recebimento pendentes. Quando um módulo de filtro está no estado Em execução e o NDIS chama a função FilterPause do driver, o módulo de filtro entra no estado Pausando. Um driver de filtro não pode falhar em uma operação de pausa. Após a conclusão da operação de pausa, o módulo de filtro entra no estado Pausado.