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áquina virtual) do NDIS. Para obter mais informações sobre estados de fila, consulte o tópico Estados da Fila e Operações na seção Escrevendo drivers VMQ .
Para cada fila, um adaptador de rede deve dar suporte ao seguinte conjunto de estados operacionais:
Indefinido
Alocado
Definir
Em Pausa
Em execução
Parar DMA
Libertar
A figura a seguir mostra as relações entre esses estados.
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 depois que a operação gratuita é concluída e todas as indicações de recebimento que foram iniciadas são concluídas.
Alocado
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 poderá entrar no estado Alocado se a fila estiver no estado Definir e o último filtro estiver limpo na 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 entrará no estado Parar DMA se o driver de miniporto receber uma solicitação de fila gratuita.
Definir
No estado Definir , 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 é alocada, mas seu driver de miniporto não indica pacotes recebidos porque não há filtros definidos na fila. O driver de miniporta 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 DMA quando recebe uma solicitação de fila gratuita.
Em execução
No estado Em execução, uma fila tem filtros definidos, a alocação da fila está 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 de miniporto poderá parar o AMD se o último filtro for limpo. No entanto, o driver de miniporta não deve enviar a indicação de estado parado do AMD nesse caso.
Parar DMA
No estado Parar DMA , o driver de miniporto recebeu uma solicitação de fila gratuita e a atividade de AMD deve ser interrompida. O driver de miniporta deve enviar uma indicação de estado interrompido por DMA. Depois que o driver de miniporta envia a indicação status, a fila está no estado Liberação. Observe que o AMD provavelmente já foi interrompido quando o último filtro foi limpo. No entanto, o driver de miniporta só deve enviar a indicação de status quando receber a solicitação de fila gratuita.
Libertar
No estado Freeing , um driver de miniporto está aguardando que todas as indicações de recebimento pendentes em uma fila sejam concluídas e liberem os recursos associados à fila. Depois que todos os recursos são liberados, a fila entra no estado Indefinido.