EXT_CALLBACK funzione di callback (wdm.h)

Una routine di callback exTimerCallback viene eseguita dopo la scadenza dell'intervallo di tempo di un oggetto timer EX_TIMER .

Sintassi

EXT_CALLBACK ExtCallback;

void ExtCallback(
  [in] PEX_TIMER Timer,
  [in] PVOID Context
)
{...}

Parametri

[in] Timer

Puntatore a una struttura EX_TIMER . Questa struttura è un oggetto timer allocato in precedenza dalla routine ExAllocateTimer .

[in] Context

Valore di contesto fornito in precedenza dal driver come parametro CallbackContext della routine ExAllocateTimer .

Valore restituito

nessuno

Osservazioni

Come opzione, il driver può fornire un puntatore a una routine ExTimerCallback nel parametro Callback che il driver passa alla routine ExAllocateTimer . Dopo la scadenza del timer, il sistema operativo chiama la routine ExTimerCallback .

Per avviare un'operazione timer, il driver passa l'oggetto timer come parametro di input alla routine ExSetTimer . Dopo la scadenza del timer, il sistema operativo pianifica l'esecuzione della routine ExTimerCallback .

Un oggetto timer è un oggetto waitable. Un thread driver può chiamare una routine come KeWaitForSingleObject o KeWaitForMultipleObjects per attendere la scadenza del timer. Al termine del timer, il sistema operativo segnala l'oggetto timer.

Un timer potrebbe essere annullato prima della scadenza. Il driver può chiamare la routine ExCancelTimer per annullare in modo esplicito un timer. Se il driver chiama la routine ExSetTimer per avviare un nuovo timer in un oggetto timer prima della scadenza di un timer impostato in precedenza su questo oggetto, questa chiamata annulla in modo implicito il timer precedente e quindi avvia il nuovo timer.

Una routine exTimerCallback può chiamare una routine, ad esempio ExSetTimer o ExDeleteTimer. Se una routine ExTimerCallback chiama ExDeleteTimer, il parametro Wait fornito in questa chiamata deve essere FALSE. Per altre informazioni, vedere Eliminazione di un oggetto timer System-Allocated.

In un sistema multiprocessore, i callback exTimerCallback per due scadenze successive di un timer periodico potrebbero essere eseguiti simultaneamente in due processori diversi.

Per altre informazioni, vedere Routine exXxxTimer e oggetti EX_TIMER.

Esempio

Per definire una routine di callback exTimerCallback , è prima necessario specificare una dichiarazione di funzione che identifica il tipo di routine di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione usando il tipo di funzione callback consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una routine di callback exTimerCallback denominata MyExTimerCallback, usare il tipo di funzione EXT_CALLBACK, come illustrato nell'esempio di codice seguente:

EXT_CALLBACK  MyExTimerCallback;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
VOID
  MyExTimerCallback(
    PEX_TIMER  Timer,
    PVOID  Context
    )
  {...}

Il tipo di funzione EXT_CALLBACK è definito nel file di intestazione Wdm.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione _Use_decl_annotations_ alla definizione della funzione. L'annotazione _Use_decl_annotations_ garantisce che vengano usate le annotazioni applicate al tipo di funzione EXT_CALLBACK nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver WDM. Per altre informazioni su , vedere Annotazione del_Use_decl_annotations_ comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.1.
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Chiamato in DISPATCH_LEVEL.

Vedi anche

EX_TIMER

ExAllocateTimer

ExCancelTimer

ExSetTimer

KeWaitForMultipleObjects

KeWaitForSingleObject