Partager via


Inscription et activation d’une routine IoTimer

Tout pilote peut inscrire une routine IoTimer , après avoir créé un ou plusieurs objets d’appareil, en appelant IoInitializeTimer. Le pilote peut ensuite démarrer le minuteur en appelant IoStartTimer. La figure suivante illustre ces appels.

diagramme illustrant l’utilisation d’une routine iotimer.

Après avoir appelé IoCreateDevice pour créer des objets d’appareil, un pilote peut appeler IoInitializeTimer avec le point d’entrée de sa routine IoTimer , ainsi que des pointeurs vers un objet d’appareil créé par le pilote et une zone de contexte dans laquelle le pilote conserve le contexte utilisé par sa routine IoTimer . Le gestionnaire d’E/S associe l’objet d’appareil à un objet de minuteur alloué au noyau et configure l’objet minuteur pour qu’il expire toutes les secondes.

Une fois que le pilote appelle IoStartTimer, sa routine IoTimer est appelée une fois par seconde jusqu’à ce que le pilote appelle IoStopTimer. Un pilote peut réactiver des appels à sa routine IoTimer avec IoStartTimer. (Souvent, lorsqu’un pilote appelle IoStartTimer, il fournit le pointeur d’objet d’appareil obtenu à partir de l’emplacement de pile d’E/S de l’IRP actuel.)

Lors de l’entrée, la routine IoTimer est transmise au pointeur d’objet d’appareil, ainsi qu’au pointeur de contexte fourni par le pilote quand il a appelé IoInitializeTimer.

Les pilotes ne doivent pas appeler IoStopTimer à partir d’une routine IoTimer .

Le gestionnaire d’E/S annule l’inscription de la routine du minuteur pour un objet d’appareil spécifié et libère son contexte associé lorsque le pilote appelle IoDeleteDevice.