Partilhar via


Estados da fila da máquina virtual NDIS

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

Para cada fila, um adaptador de rede deve suportar o seguinte conjunto de estados operacionais:

  • Indefinido

  • Atribuído

  • Conjunto

  • Em pausa

  • Corrida

  • Parar DMA

  • Libertação

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

Diagrama ilustrando os estados da fila da VM NDIS e seus relacionamentos.

O seguinte define os estados do adaptador:

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

Atribuído
Uma fila está no estado Alocado após uma solicitação de alocação e antes que haja filtros definidos na fila. O filtro também pode entrar no estado Alocado se a fila estiver no estado Definido e o último filtro for removido da fila. A fila entra no estado Pausado se o miniport driver receber um pedido de conclusão de alocação enquanto estiver no estado Alocado. A fila entra no estado Stop DMA se o driver de miniporta receber uma solicitação para liberar a fila.

set
No estado set, uma fila é alocada e pelo menos um filtro é definido na fila, mas o driver de miniporta ainda não recebeu um OID completo de alocação. A fila entra no estado Em execução se receber uma solicitação de alocação concluída. A fila entra no estado Atribuído se o último filtro da fila for removido. Observe que a fila não pode ser liberada enquanto houver filtros definidos na fila.

Pausa
No estado Pausado, a fila é alocada, mas o seu miniport driver não indica pacotes recebidos porque não há filtros definidos na fila. O driver miniport pode entrar no estado Pausado a partir 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 Stop DMA quando recebe uma solicitação de fila gratuita.

Corrida
No estado Executando, uma fila tem filtros aplicados, a alocação da fila está concluída e o adaptador de rede indica a recepção de pacotes. A fila entra no estado Pausado se o último filtro da fila for limpo. Observe que a fila não pode ser liberada enquanto houver filtros definidos na fila. Além disso, o driver de miniporta pode parar o DMA se o último filtro for limpo. No entanto, o driver de miniporta não deve enviar a indicação de estado de parado do DMA neste caso.

Parar DMA
No estado Stop DMA, o driver de miniporta recebeu um pedido de fila gratuita e a atividade de DMA deve ser interrompida. O driver da miniporta deve enviar uma indicação de estado de paragem do DMA. Depois que o driver de miniporta envia a indicação de status, a fila está no estado de liberação. Observe que o DMA provavelmente já estava parado quando o último filtro foi limpo. No entanto, o driver de miniporta só deve enviar a indicação de status quando receber o pedido de fila livre.

Libertação
No estado Freeing, um controlador de miniporta está à espera de todas as indicações de recebimento pendentes na fila para concluir, e depois liberar os recursos associados à fila. Depois que todos os recursos são liberados, a fila entra no estado Indefinido.