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 posterior.

O NDIS chama a função MiniportCheckForHangEx de um driver de miniport para marcar o estado operacional do adaptador de miniporte que representa uma NIC (cartão de interface de rede).

Nota Um driver de miniporte pode declarar essa função usando o tipo MINIPORT_CHECK_FOR_HANG .
 
Nota 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 negativo de energia 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 miniporte.

Retornar valor

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

Comentários

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 mais do que marcar o estado interno da NIC e retorna TRUE se detectar que a NIC não está operando corretamente.

Por padrão, o NDIS chama 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.

Nota A partir do 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 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 MiniportResetEx do driver. No entanto, para evitar redefinições desnecessárias, a função MiniportInitializeEx do driver pode estender o intervalo de tempo limite marcar-for-hang definindo um valor de CheckForHangTimeInSeconds apropriado ao chamar o Função NdisMSetMiniportAttributes .

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

Nota A partir do NDIS 6.30, MiniportCheckForHangEx deverá retornar TRUE se o driver de miniporto 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 precedido por uma interrupção.

O NDIS chama MiniportCheckForHangEx em IRQL = PASSIVE_LEVEL.

Exemplos

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 a 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
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL PASSIVE_LEVEL

Confira também

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

MiniportInitializeEx

MiniportResetEx

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes