Compartilhar via


Estados da fila da máquina virtual do NDIS

Este tópico fornece uma visão geral dos estados operacionais das VMQs (filas de máquinas virtuais) do NDIS. Para obter mais informações sobre estados de fila, consulte o tópico Estados da Fila e Operações na seção Escrever Drivers VMQ .

Para cada fila, um adaptador de rede deve dar suporte ao seguinte conjunto de estados operacionais:

  • Indefinido

  • Alocado

  • Conjunto

  • Em Pausa

  • Correndo

  • Parar DMA

  • Libertar

A figura a seguir mostra as relações entre esses estados.

Diagrama ilustrando os estados da fila da VM do NDIS e suas relações.

O seguinte define os estados do adaptador:

Indefinido
Indefinido é o estado inicial de uma fila. Nesse estado, a fila não é alocada. Uma fila (exceto a fila padrão que sempre existe) é indefinida até que o driver de miniporto receba uma solicitação de alocação de fila. Além disso, ele é indefinido após a conclusão da operação gratuita e todas as indicações de recebimento iniciadas são concluídas.

Alocado
Uma fila está no estado Alocado após uma solicitação de alocação e antes de haver filtros definidos na fila. O filtro também poderá entrar no estado Alocado se a fila estiver no estado Set e o último filtro for removido da fila. A fila entrará no estado pausado se o driver de miniporto receber uma solicitação de alocação completa enquanto o driver de miniporto estiver no estado Alocado. A fila entra no estado Parar DMA se o driver de miniporto receber uma solicitação para liberar a fila.

Configurar
No estado Set , uma fila é alocada e pelo menos um filtro é definido na fila, mas o driver de miniporto ainda não recebeu uma OID completa de alocação. A fila entrará no estado em execução se receber uma solicitação de alocação completa. A fila entrará no estado Alocado se o último filtro na fila estiver limpo. Observe que a fila não pode ser liberada enquanto houver filtros definidos na fila.

Pausado
No estado pausado, a fila é atribuída, mas seu driver de miniporto não indica pacotes recebidos já que não há filtros configurados na fila. O driver de miniporto pode entrar no estado pausado do estado Alocado ou do estado em execução. A fila entra no estado em execução quando recebe uma solicitação de conjunto de filtros. A fila entra no estado Parar o DMA quando recebe uma solicitação de liberação de fila.

Executando
No estado Em execução , uma fila tem filtros definidos, a alocação de fila é concluída e o adaptador de rede indica pacotes de recebimento. A fila entrará no estado pausado se o último filtro na fila estiver limpo. Observe que a fila não pode ser liberada enquanto houver filtros definidos na fila. Além disso, o driver miniport pode parar o DMA se o último filtro for removido. No entanto, o driver de miniporta não deve enviar a indicação de estado de parada do DMA nesse caso.

Parar DMA
No estado Parar DMA, o driver de miniporto recebeu uma solicitação para liberar a fila, e a atividade de DMA deve ser interrompida. O driver de miniporto deve enviar uma indicação de estado de parada de DMA. Depois que o miniport driver envia a indicação de status, a fila encontra-se no estado em liberação. Observe que o DMA provavelmente já foi interrompido quando o último filtro foi limpo. No entanto, o driver de miniporto só deve enviar a indicação de status quando receber a solicitação de fila livre.

Liberando
No estado Liberando, um miniport driver aguarda a conclusão de todas as indicações de recebimento pendentes em uma fila e libera os recursos associados à fila. Depois que todos os recursos são liberados, a fila entra no estado indefinido.