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