Registro y habilitación de una rutina de IoTimer
Cualquier controlador puede registrar una rutina de IoTimer , después de crear uno o varios objetos de dispositivo, mediante una llamada a IoInitializeTimer. Después, el controlador puede iniciar el temporizador mediante una llamada a IoStartTimer. En la ilustración siguiente se muestran estas llamadas.
Después de llamar a IoCreateDevice para crear objetos de dispositivo, un controlador puede llamar a IoInitializeTimer con el punto de entrada de su rutina de IoTimer , junto con punteros a un objeto de dispositivo creado por el controlador y un área de contexto en la que el controlador mantiene el contexto que usa su rutina de IoTimer . El administrador de E/S asocia el objeto de dispositivo a un objeto de temporizador asignado por kernel y configura el objeto de temporizador para agotar el tiempo de espera cada segundo.
Una vez que el controlador llama a IoStartTimer, se llama a su rutina ioTimer una vez por segundo hasta que el controlador llama a IoStopTimer. Un controlador puede volver a habilitar las llamadas a su rutina de IoTimer con IoStartTimer. (Con frecuencia, cuando un controlador llama a IoStartTimer, proporciona el puntero de objeto de dispositivo obtenido de la ubicación de pila de E/S del IRP actual).
En la entrada, la rutina IoTimer se pasa al puntero de objeto de dispositivo, junto con el puntero de contexto que el controlador proporcionó cuando llamó a IoInitializeTimer.
Los controladores no deben llamar a IoStopTimer desde una rutina de IoTimer .
El administrador de E/S anula el registro de la rutina del temporizador de un objeto de dispositivo especificado y libera su contexto asociado cuando el controlador llama a IoDeleteDevice.