Registrazione e abilitazione di una routine IoTimer
Qualsiasi driver può registrare una routine IoTimer , dopo aver creato uno o più oggetti dispositivo, chiamando IoInitializeTimer. Il driver può quindi avviare il timer chiamando IoStartTimer. La figura seguente illustra queste chiamate.
Dopo aver chiamato IoCreateDevice per creare oggetti dispositivo, un driver può chiamare IoInitializeTimer con il punto di ingresso della routine IoTimer , insieme ai puntatori a un oggetto dispositivo creato dal driver e a un'area di contesto in cui il driver gestisce qualsiasi contesto usi la routine IoTimer . Il gestore I/O associa l'oggetto dispositivo a un oggetto timer allocato dal kernel e imposta l'oggetto timer per il timeout ogni secondo.
Dopo che il driver chiama IoStartTimer, la routine IoTimer viene chiamata una volta al secondo fino a quando il driver chiama IoStopTimer. Un driver può riabilitare le chiamate alla routine IoTimer con IoStartTimer. Spesso, quando un driver chiama IoStartTimer, fornisce il puntatore dell'oggetto dispositivo ottenuto dalla posizione dello stack I/O dell'IRP corrente.
Nella voce, la routine IoTimer viene passata al puntatore dell'oggetto del dispositivo, insieme al puntatore di contesto fornito dal driver quando ha chiamato IoInitializeTimer.
I driver non devono chiamare IoStopTimer dall'interno di una routine IoTimer .
Gestione I/O annulla la registrazione della routine timer per un oggetto dispositivo specificato e libera il contesto associato quando il driver chiama IoDeleteDevice.