Compartilhar via


MINIPORT_CHECK_FOR_HANG função de retorno de chamada (ndis.h)

Aviso

As funções de retorno de chamada MiniportCheckForHangEx e MiniportResetEx 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 posteriores.

O NDIS chama a função MiniportCheckForHangEx de um driver de miniporto para verificar o estado operacional do adaptador de miniporto que representa uma NIC (placa de interface de rede).

Observação Um driver de miniporto pode declarar essa função usando o tipo MINIPORT_CHECK_FOR_HANG.
 
Observação A partir do NDIS 6.30, essa função não deve ser registrada para drivers em execução em plataformas SoC de baixa potência para evitar o impacto de energia negativo causado pela atividade periódica Check-for-Hang.
 

Sintaxe

MINIPORT_CHECK_FOR_HANG MiniportCheckForHang;

BOOLEAN MiniportCheckForHang(
  [in] NDIS_HANDLE MiniportAdapterContext
)
{...}

Parâmetros

[in] MiniportAdapterContext

Um identificador para uma área de contexto que o driver de miniporto alocou em sua função MiniportInitializeEx. O driver de miniporto usa essa área de contexto para manter informações de estado para um adaptador de miniporto.

Valor de retorno

MiniportCheckForHangEx retornará verdadeiro se o driver determinar que uma NIC não está operando e o NDIS deverá chamar a função de MiniportResetEx do do driver. Para obter mais informações, consulte a seção Comentários.

Observações

Um driver de miniporto especifica o ponto de entrada MiniportCheckForHangEx quando ele chama o função NdisMRegisterMiniportDriver.

miniportCheckForHangEx não é necessário para drivers intermediários.

MiniportCheckForHangEx não faz nada além de verificar o estado interno da NIC e retornar VERDADEIRO se detectar que a NIC não está operando corretamente.

Por padrão, as chamadas NDIS MiniportCheckForHangEx aproximadamente a cada dois segundos. Por esse motivo, a função MiniportCheckForHangEx do driver de miniport deve retornar o mais rápido possível.

Observação Começando com o NDIS 6.30, um temporizador coalescável com alta tolerância é usado para medir intervalos entre chamadas para MiniportCheckForHangEx. Portanto, essa rotina não deve ser usada para operações sensíveis ao tempo.
 
Se MiniportCheckForHangEx retornar TRUE, o NDIS chamará a função de miniportresetEx do driver de miniport.

Se um driver de miniporto não concluir uma solicitação OID em duas chamadas sucessivas para miniportCheckForHangEx, o NDIS poderá chamar a função de MiniportResetEx do driver. No entanto, para evitar redefinições desnecessárias, a função MiniportInitializeEx do driver pode estender o intervalo de tempo limite de check-for-hang definindo um valor de check-for-hang apropriado CheckForHangTimeInSeconds função NdisMSetMiniportAttributes.

Para obter mais informações sobre como definir o CheckForHangTimeInSeconds valor de tempo limite, consulte Miniport Adapter Check-for-Hang and Reset Operations.

Observação Começando com o NDIS 6.30, MiniportCheckForHangEx deverá retornar verdadeiro se o driver de miniport detectar que a NIC não concluiu uma solicitação de envio pendente antes de um período de tempo limite expirar. O período de tempo limite é específico do driver, mas recomendamos usar um período de tempo limite de 2 segundos.
 
miniportCheckForHangEx pode ser preemptado por uma interrupção.

Chamadas NDIS miniportCheckForHangEx em IRQL = PASSIVE_LEVEL.

exemplos de

Para definir uma função MiniportCheckForHangEx, primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda Análise de Código para Drivers, SDV (Verificador de Driver Estático) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma função MiniportCheckForHangEx chamada "MyCheckForHangEx", use o tipo MINIPORT_CHECK_FOR_HANG conforme mostrado neste exemplo de código:

MINIPORT_CHECK_FOR_HANG MyCheckForHangEx;

Em seguida, implemente sua função da seguinte maneira:

_Use_decl_annotations_
BOOLEAN
 MyCheckForHangEx(
    NDIS_HANDLE  MiniportAdapterContext
    )
  {...}

O tipo de função MINIPORT_CHECK_FOR_HANG é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função MINIPORT_CHECK_FOR_HANG no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte no NDIS 6.0 e posterior.
da Plataforma de Destino Windows
cabeçalho ndis.h (inclua Ndis.h)
IRQL PASSIVE_LEVEL

Consulte também

operações de verificação e redefinição do adaptador de miniporto

MiniportInitializeEx

MiniportResetEx

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes