Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para cada fila, um adaptador de rede deve dar suporte ao seguinte conjunto de estados operacionais:
Indefinido
A fila não está alocada. Para alocar uma fila, um driver sobrejacente envia uma solicitação OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE.
Alocado
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 OID_RECEIVE_FILTER_SET_FILTER ou conclui a alocação da fila com a solicitação de OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE.
Configurar
No estado Set, uma fila tem pelo menos um filtro alocado, mas o driver subjacente não enviou o OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE.
Executando
No estado Em execução , a fila tem filtros definidos, a alocação de fila é concluída e o adaptador de miniporto indica pacotes de recebimento para a fila.
Pausado
No estado pausado , o adaptador de rede não indica dados de rede recebidos para a fila. Não havia filtros definidos na fila antes da solicitação de OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE, ou todos os filtros que foram definidos na fila foram removidos com a solicitação de OID OID_RECEIVE_FILTER_CLEAR_FILTER.
DMA parado
No estado DMA Parado, um driver de miniporto recebeu uma OID de solicitação OID_RECEIVE_FILTER_FREE_QUEUE. Quando o DMA é interrompido e o driver emitiu a indicação de status de DMA parado (com NDIS_STATUS_RECEIVE_QUEUE_STATE), o driver entra no estado de libertação.
Liberando
No estado De liberação , um driver de miniporto conclui as operações necessárias para interromper as operações de envio e recebimento da fila e libera os recursos associados. Depois que todas as indicações de recebimento pendentes forem concluídas, a fila será excluída e fica indefinida.
Na tabela a seguir, os cabeçalhos são os estados da fila. Os principais eventos são listados na primeira coluna. O restante das entradas na tabela especifica o próximo estado em que a fila entra depois que um evento ocorre dentro de um estado. As entradas em branco representam combinações de evento/estado inválidas.
| Evento \ Estado | Indefinido | Alocado | Conjunto | Correndo | Em Pausa | Parar DMA | Libertar |
|---|---|---|---|---|---|---|---|
OID_RECEIVE_FILTER_ALLOCATE_QUEUE – método (set) |
Alocado |
||||||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS – solicitação de método (consulta) |
Alocado |
Conjunto |
Correndo |
Em Pausa |
|||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS – definir solicitação |
Alocado |
Conjunto |
Correndo |
Em Pausa |
|||
OID_RECEIVE_FILTER_SET_FILTER – solicitação de método (definir) |
Conjunto |
Conjunto |
Correndo |
Correndo |
|||
OID_RECEIVE_FILTER_CLEAR_FILTER – definir solicitação (último filtro) |
Alocado |
Em Pausa |
|||||
OID_RECEIVE_FILTER_CLEAR_FILTER – definir a solicitação (não o último filtro) |
Conjunto |
Correndo |
|||||
OID_RECEIVE_FILTER_ENUM_FILTERS – método (solicitação de consulta) |
Alocado |
Conjunto |
Correndo |
Em Pausa |
|||
OID_RECEIVE_FILTER_PARAMETERS – solicitação de método (consulta) |
Conjunto |
Correndo |
|||||
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE – solicitação de método (set) |
Em Pausa |
Correndo |
|||||
Receber pacote |
Correndo |
||||||
OID_RECEIVE_FILTER_FREE_QUEUE definir solicitação |
Parar DMA |
Parar DMA |
|||||
O DMA foi interrompido e foi enviada a indicação de status NDIS_STATUS_RECEIVE_QUEUE_STATE (Observação: o DMA provavelmente já estava interrompido no estado Alocado ou Pausado) |
Libertar |
||||||
Todas as indicações de recebimento são concluídas e os recursos da fila são liberados |
Indefinido |
Nota 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 em que esses eventos são válidos.
Os eventos da fila primária são definidos da seguinte maneira:
OID_RECEIVE_FILTER_ALLOCATE_QUEUE – solicitação do método (set)
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 – solicitação de método (definir)
Um driver superior define um filtro em uma fila. Se o driver sobreposto não tiver enviado o OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE , a fila estará no estado Set. Caso contrário, a fila estará no estado em execução. Para obter mais informações sobre como definir filtros em filas, consulte Configuração e limpeza de filtros VMQ.
OID_RECEIVE_FILTER_CLEAR_FILTER – definir solicitação
Um driver sobreposto limpou um filtro em uma fila. Se o último filtro tiver sido limpo em uma fila em execução, o DMA poderá ser interrompido; as indicações de recebimento são interrompidas e a fila deve ser limpa dos dados recebidos, caso existam. Para obter mais informações sobre como limpar filtros em filas, consulte Configuração e limpeza de filtros VMQ.
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE – solicitação de método (set)
Um driver em excesso concluiu a alocação da fila. Se houver filtros definidos na fila, a fila estará no estado em execução e as indicações de recebimento poderão ser iniciadas. Para obter mais informações sobre como concluir a alocação de fila, consulte Alocar e liberar filas de VM.
Receber pacote
Um miniport driver só pode indicar pacotes de recebimento para uma fila que está no estado 'Executando'. 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 solicitação.
Um driver sobreposto liberou uma fila. O driver emite a indicação de status de parada por DMA (com NDIS_STATUS_RECEIVE_QUEUE_STATE), o driver entra no estado de liberação. Quando todas as notificações de recebimento pendentes são concluídas e os recursos da fila são liberados, a fila torna-se indefinida.