Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para cada fila, um adaptador de rede deve suportar o seguinte conjunto de estados operacionais:
Indefinido
A fila não está alocada. Para alocar uma fila, um driver sobreposto envia um pedido de OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE.
Atribuído
O estado Alocado é o estado inicial de uma fila. Quando uma fila está no estado alocado, o driver sobreposto geralmente define filtros na fila com o OID_RECEIVE_FILTER_SET_FILTER OID ou conclui a alocação da fila com a solicitação OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE.
set
No estado Set, uma fila tem pelo menos um filtro alocado, mas o driver subjacente não enviou o OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID.
Corrida
No estado em execução , a fila tem filtros definidos, a alocação da fila está concluída e o adaptador de miniporta está indicando pacotes de recebimento para a fila.
Pausa
No estado Pausado , o adaptador de rede não indica dados de rede recebidos para a fila. Ou não havia filtros definidos na fila antes da solicitação OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE, ou todos os filtros que foram definidos na fila foram limpos com a solicitação OID_RECEIVE_FILTER_CLEAR_FILTER.
DMA parado
No estado DMA Parado, um driver de miniporta recebeu uma solicitação da OID_RECEIVE_FILTER_FREE_QUEUE. Quando o DMA é parado e o controlador emite a indicação de estado de DMA parado (com NDIS_STATUS_RECEIVE_QUEUE_STATE), o controlador entra no estado de libertação.
Libertação
No estado de liberação , um driver de miniporta conclui as operações necessárias para interromper as operações de envio e recebimento para a fila e libera os recursos associados. Depois que todas as indicações de recebimento pendentes forem concluídas, a fila é eliminada e passa a ser Indefinida.
Na tabela a seguir, os títulos são os estados da fila. Os principais eventos são listados na primeira coluna. As restantes entradas na tabela indicam o próximo estado para o qual a fila transita após a ocorrência de um evento dentro desse estado. As entradas em branco representam combinações de evento/estado inválidas.
| Evento \ Estado | Não definido | Atribuído | Conjunto | Corrida | Em pausa | Parar DMA | Libertação |
|---|---|---|---|---|---|---|---|
OID_RECEIVE_FILTER_ALLOCATE_QUEUE - método (set) |
Atribuído |
||||||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS - pedido de método (consulta) |
Atribuído |
Conjunto |
Corrida |
Em pausa |
|||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS - definir pedido |
Atribuído |
Conjunto |
Corrida |
Em pausa |
|||
OID_RECEIVE_FILTER_SET_FILTER - pedido de método (definir) |
Conjunto |
Conjunto |
Corrida |
Corrida |
|||
OID_RECEIVE_FILTER_CLEAR_FILTER - definir solicitação (último filtro) |
Atribuído |
Em pausa |
|||||
OID_RECEIVE_FILTER_CLEAR_FILTER - definir pedido (não último filtro) |
Conjunto |
Corrida |
|||||
OID_RECEIVE_FILTER_ENUM_FILTERS - método (pedido de requisição) |
Atribuído |
Conjunto |
Corrida |
Em pausa |
|||
OID_RECEIVE_FILTER_PARAMETERS - requisição de método (consulta) |
Conjunto |
Corrida |
|||||
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE - pedido do método (definir) |
Em pausa |
Corrida |
|||||
Receção de pacote |
Corrida |
||||||
OID_RECEIVE_FILTER_FREE_QUEUE solicitação de configuração |
Parar DMA |
Parar DMA |
|||||
O DMA foi interrompido, e a indicação de estado NDIS_STATUS_RECEIVE_QUEUE_STATE foi enviada (Nota: o DMA provavelmente já se encontrava parado no estado Alocado ou Pausado). |
Libertação |
||||||
Todas as indicações recebidas estão completas e os recursos da fila são liberados |
Não definido |
Observação Os eventos listados na tabela anterior incluem alguns eventos secundários que não resultam em uma alteração de estado. Esses eventos secundários são incluídos na tabela para especificar os estados onde esses eventos são válidos.
Os eventos de fila primários são definidos da seguinte forma:
OID_RECEIVE_FILTER_ALLOCATE_QUEUE - pedido de método (definição)
Um driver superior alocou uma fila. Para obter mais informações sobre como alocar filas, consulte Alocando e liberando filas de VM.
OID_RECEIVE_FILTER_SET_FILTER - pedido de método (definir)
Um driver superior configurou um filtro numa fila. Se o driver sobreposto não tiver enviado o OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID, a fila estará no estado de Configuração. Caso contrário, a fila estará no estado em execução. Para obter mais informações sobre como definir filtros em filas, consulte Definindo e limpando filtros VMQ.
OID_RECEIVE_FILTER_CLEAR_FILTER - definir pedido
Um driver superior limpou um filtro numa fila. Se o último filtro foi limpo numa fila em execução, o DMA pode ser interrompido; as indicações de receção são paradas e a fila deve ser esvaziada dos dados recebidos, se houver. Para obter mais informações sobre a limpeza de filtros em filas, consulte Configuração e limpeza de filtros VMQ.
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE - pedido de método (conjunto)
Um driver sobreposto completou a alocação da fila. Se houver filtros definidos na fila, ela está no estado 'Em Execução' e o recebimento de indicações pode começar. Para obter mais informações sobre como concluir a alocação de filas, consulte Alocação e Liberação de Filas de VMs.
Receber pacote
Um driver de miniporta só pode indicar pacotes de recebimento para uma fila que está no estado em execução. Para obter mais informações sobre como indicar dados recebidos para filas, consulte Operações de envio e recebimento do VMQ.
OID_RECEIVE_FILTER_FREE_QUEUE definir pedido.
Um motorista sobreposto liberou uma fila. O motorista emite a indicação de status DMA-stop (com NDIS_STATUS_RECEIVE_QUEUE_STATE), o driver entra no estado de liberação. Quando todas as indicações de recebimento pendentes estiverem concluídas e os recursos da fila forem liberados, a fila torna-se indefinida.