Compartilhar via


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

A função de retorno de chamada NdisTimerFunction é chamada pelo NDIS depois que um driver define um temporizador único ou periódico quando um temporizador é acionado.

Nota Você deve declarar a função usando o tipo NDIS_TIMER_FUNCTION . Para obter mais informações, consulte a seção Exemplos a seguir.
 

Sintaxe

NDIS_TIMER_FUNCTION NdisTimerFunction;

void NdisTimerFunction(
  [in] PVOID SystemSpecific1,
  [in] PVOID FunctionContext,
  [in] PVOID SystemSpecific2,
  [in] PVOID SystemSpecific3
)
{...}

Parâmetros

[in] SystemSpecific1

Um ponteiro para um valor específico do sistema reservado para uso do sistema.

[in] FunctionContext

Um ponteiro para uma área de contexto fornecida pelo driver que o driver passou para a função NdisSetTimerObject . Se o parâmetro FunctionContext de NdisSetTimerObject for NULL, o NDIS usará o valor padrão especificado pelo driver no NDIS_TIMER_CHARACTERISTICS estrutura. O driver passou a estrutura para a função NdisAllocateTimerObject para inicializar o objeto de temporizador associado.

[in] SystemSpecific2

Um ponteiro para um valor específico do sistema reservado para uso do sistema.

[in] SystemSpecific3

Um ponteiro para um valor específico do sistema reservado para uso do sistema.

Retornar valor

Nenhum

Comentários

Qualquer driver NDIS pode ter uma ou mais funções de retorno de chamada NdisTimerFunction . Cada retorno de chamada NdisTimerFunction deve ser associado a um objeto de temporizador alocado e inicializado por driver diferente.

O driver inicializa um objeto de temporizador alocado pelo driver chamando o Função NdisAllocateTimerObject .

Uma chamada subsequente para a função NdisSetTimerObject faz com que o retorno de chamada NdisTimerFunction associado ao objeto de temporizador seja executado após um intervalo especificado ou periodicamente.

Para cancelar chamadas para NdisTimerFunction, chame a função NdisCancelTimerObject . O NDIS ainda poderá chamar NdisTimerFunction se o tempo limite já tiver expirado antes da chamada para NdisCancelTimerObject.

Se um retorno de chamada NdisTimerFunction compartilhar recursos com outras funções de driver, o driver deverá sincronizar o acesso a esses recursos com um bloqueio de rotação.

Exemplos

Para definir uma função NdisTimerFunction , 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 escrever drivers para o sistema operacional Windows.

Por exemplo, para definir uma função NdisTimerFunction chamada "MyTimerCallback", use o tipo NDIS_TIMER_FUNCTION conforme mostrado neste exemplo de código:

NDIS_TIMER_FUNCTION MyTimerCallback;

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

_Use_decl_annotations_
VOID
 MyTimerCallback(
    PVOID  SystemSpecific1,
    PVOID  FunctionContext,
    PVOID  SystemSpecific2,
    PVOID  SystemSpecific3
    )
  {...}

O tipo de função NDIS_TIMER_FUNCTION é 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 NDIS_TIMER_FUNCTION 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 DISPATCH_LEVEL

Confira também

Inicializando temporizadores NDIS

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetTimerObject

Temporizadores de Manutenção

Configurando e limpando temporizadores