Operações de verificação e redefinição do adaptador de miniporta

Visão geral

Aviso

As operações check-for-hang (CFH) e Reset são desencorajadas para todos os drivers NDIS 6.83 e posteriores. Para obter mais informações, consulte Operações Check-for-Hang e Reset no NDIS 6.83 e posterior.

O NDIS chama a função MiniportCheckForHangEx de um driver de miniport NDIS para marcar o estado operacional de um adaptador NDIS que representa uma NIC (cartão de interface de rede). MiniportCheckForHangEx verifica o estado interno do adaptador e retorna TRUE se detecta que o adaptador não está operando corretamente.

Por padrão, o NDIS chama MiniportCheckForHangEx aproximadamente a cada 2 segundos. Se MiniportCheckForHangEx retornar TRUE, o NDIS chamará a função MiniportResetEx do driver de miniport do NDIS. Se o valor de tempo limite padrão de 2 segundos for muito pequeno, o driver de miniporto poderá definir um valor diferente no momento da inicialização da seguinte maneira:

  1. Defina o membro CheckForHangTimeInSeconds da estrutura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES como um valor diferente de zero.
  2. Passe a estrutura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES no parâmetro MiniportAttributes da função NdisMSetMiniportAttributes .

Para obter mais informações sobre como definir atributos de driver, consulte Inicializando um adaptador. O valor de CheckForHangTimeInSeconds deve ser maior que o tempo de inicialização do driver de miniport. No entanto, se o driver levar mais tempo do que CheckForHangTimeInSeconds segundos para inicializar, esse tempo limite expirará, fazendo com que o NDIS chame a função MiniportCheckForHangEx do driver. Se MiniportCheckForHangEx retornar TRUE, o NDIS chamará a função MiniportResetEx do driver. Por esse motivo, você deve sincronizar a função MiniportCheckForHangEx do driver com a inicialização do driver para que MiniportCheckForHangEx não retorne TRUE se o driver não tiver terminado de inicializar.

Se o driver de miniporto não concluir uma solicitação OID em duas chamadas sucessivas para MiniportCheckForHangEx, o NDIS poderá chamar a função MiniportResetEx do driver. Para algumas solicitações de OID, o NDIS chamará MiniportResetEx se o driver não concluir a solicitação em quatro chamadas sucessivas para MiniportCheckForHangEx.

A operação de redefinição não afeta os estados operacionais do adaptador de miniporta. Além disso, o estado do adaptador pode mudar enquanto uma operação de redefinição está em andamento. Por exemplo, o NDIS pode chamar a função MiniportPause de um driver quando há uma operação de redefinição em andamento. Nesse caso, o driver pode concluir a operação de redefinição ou pausa em qualquer ordem enquanto segue os requisitos normais para cada operação.

Para uma operação de redefinição, o driver pode falhar ao transmitir pacotes de solicitação ou pode mantê-los na fila e concluí-los mais tarde. No entanto, você deve observar que um driver de sobreposição não pode concluir uma operação de pausa enquanto seus pacotes de transmissão estão pendentes.

Um driver de miniporta pode concluir uma solicitação de redefinição de forma síncrona retornando um status de êxito ou falha. O driver pode concluir uma solicitação de redefinição de forma assíncrona retornando NDIS_STATUS_PENDING. Nesse caso, o driver deve chamar NdisMResetComplete para concluir a operação.

Operações Check-for-Hang e Reset no NDIS 6.83 e posterior

Nas versões do NDIS anteriores à 6.83, as operações check-for-hang (CFH) e Reset eram desencorajadas para sistemas Always On, AoAC (Always Connected) devido a problemas de duração da bateria. No entanto, os drivers ainda podem usar o CFH em outros sistemas Windows não AOAC implementando as funções de retorno de chamada MiniportCheckForHangEx e MiniportResetEx opcionais.

A partir do NDIS 6.83, essas funções de retorno de chamada são desencorajadas em todos os sistemas Windows, independentemente dos recursos de energia. Embora não seja uma violação de teste de logotipo usar o CFH no NDIS 6.83 e posterior, os drivers NDIS devem usar a tabela a seguir para obter diretrizes sobre seu uso.

Chamador Recomendação Observações
Drivers direcionados a sistemas AOAC Não deve implementar Causa problemas de duração da bateria devido à atividade periódica de marcar para travamento
Drivers direcionados a sistemas Windows Server Não deve implementar Causa problemas quando a CPU está estressada
Drivers de miniporta virtual (somente software) Não deve implementar Redefinir não é possível sem hardware
Outros novos drivers NDIS 6.83 e posteriores Não deve implementar
Outro código NDIS 6.82 e anterior existente Não é necessário alterar, mas deve considerar a remoção de Check-for-Hang e Reset no retrabalho futuro

Redefinição de hardware do driver de miniport

Funções De redefinição e interrupção do driver de miniport