IO_TIMER_ROUTINE funzione di callback (wdm.h)

La routine IoTimer è un DPC che, se registrato, viene chiamato una volta al secondo.

Sintassi

IO_TIMER_ROUTINE IoTimerRoutine;

void IoTimerRoutine(
  [in]           _DEVICE_OBJECT *DeviceObject,
  [in, optional] PVOID Context
)
{...}

Parametri

[in] DeviceObject

Puntatore fornito dal chiamante a una struttura DEVICE_OBJECT . Si tratta dell'oggetto dispositivo per il dispositivo di destinazione, creato in precedenza dalla routine AddDevice del driver.

[in, optional] Context

Puntatore fornito dal chiamante alle informazioni sul contesto definite dal driver, specificate in una chiamata precedente a IoInitializeTimer.

Valore restituito

nessuno

Osservazioni

La routine IoTimer di un driver viene eseguita in un contesto DPC, in IRQL = DISPATCH_LEVEL.

Un driver può associare una routine IoTimer a ogni oggetto dispositivo creato. È possibile usare una singola routine IoTimer con più oggetti dispositivo o una routine separata con ogni oggetto dispositivo. Per registrare una routine IoTimer , un driver deve chiamare IoInitializeTimer, fornendo l'indirizzo della routine IoTimer e un puntatore a oggetti dispositivo.

Per accodare una routine IoTimer per l'esecuzione, una routine driver deve chiamare IoStartTimer. Il sistema chiama la routine IoTimer una volta al secondo fino a quando il driver chiama IoStopTimer.

Per altre informazioni sulle routine IoTimer, vedere Routine IoTimer.

Esempio

Per definire una routine di callback IoTimer , è 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 i tipi 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 IoTimer denominata MyIoTimer, usare il tipo di IO_TIMER_ROUTINE, come illustrato nell'esempio di codice seguente:

IO_TIMER_ROUTINE MyIoTimer;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
VOID
  MyIoTimer(
    struct DEVICE_OBJECT  *DeviceObject,
    PVOID  Context
    )
  {
      // Function body
  }

Il tipo di funzione IO_TIMER_ROUTINE è 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 IO_TIMER_ROUTINE 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 informazioni su _Use_decl_annotations_, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Chiamato in DISPATCH_LEVEL (vedere la sezione Osservazioni).