Fonction KeSetTimer (wdm.h)
La routine KeSetTimer définit l’intervalle absolu ou relatif auquel un objet de minuteur doit être défini à un état signalé et, éventuellement, fournit une routine CustomTimerDpc à exécuter à l’expiration de cet intervalle.
Syntaxe
BOOLEAN KeSetTimer(
[in, out] PKTIMER Timer,
[in] LARGE_INTEGER DueTime,
[in, optional] PKDPC Dpc
);
Paramètres
[in, out] Timer
Pointeur vers un objet minuteur qui a été initialisé avec KeInitializeTimer ou KeInitializeTimerEx.
[in] DueTime
Spécifie l’heure absolue ou relative à laquelle le minuteur doit expirer. Si la valeur du paramètre DueTime est négative, l’heure d’expiration est relative à l’heure système actuelle. Sinon, le délai d’expiration est absolu. Le temps d’expiration est exprimé en unités de temps système (intervalles de 100 nanosecondes). Les heures d’expiration absolues suivent les modifications apportées à l’heure système ; les heures d’expiration relatives ne sont pas affectées par les changements d’heure système.
[in, optional] Dpc
Pointeur vers un objet DPC initialisé par KeInitializeDpc. Ce paramètre est facultatif.
Valeur renvoyée
Si l’objet minuteur se trouvait déjà dans la file d’attente du minuteur système, KeSetTimer retourne TRUE.
Remarques
La routine KeSetTimer effectue les opérations suivantes :
Calcule le délai d’expiration.
Définit le minuteur à un état non signalé.
Insère l’objet minuteur dans la file d’attente du minuteur système.
Si l’objet minuteur se trouvait déjà dans la file d’attente du minuteur, il est implicitement annulé avant d’être défini sur la nouvelle heure d’expiration. Un appel à KeSetTimer avant l’expiration de DueTime précédemment spécifié annule le minuteur et l’appel au Dpc, le cas échéant, associé à l’appel précédent.
Si le paramètre Dpc est spécifié, un objet DPC est associé à l’objet minuteur. Lorsque le minuteur expire, l’objet minuteur est supprimé de la file d’attente du minuteur système et son état est défini sur signalé. Si un objet DPC a été associé au minuteur lorsqu’il a été défini, l’objet DPC est inséré dans la file d’attente DPC système pour être exécuté dès que les conditions le permettent après l’expiration de l’intervalle du minuteur.
Les temps d’expiration sont mesurés par rapport à l’horloge système, et la précision avec laquelle le système d’exploitation peut détecter l’expiration d’un minuteur est limitée par la granularité de l’horloge système. Pour plus d’informations, consultez Précision du minuteur.
Une seule instanciation d’un objet DPC donné peut être mise en file d’attente à un moment donné. Pour éviter d’éventuelles conditions de course, le DPC passé à KeSetTimer ne doit pas être passé à KeInsertQueueDpc.
Les pilotes doivent annuler tous les minuteurs actifs dans leurs routines de déchargement . Utilisez KeCancelTimer pour annuler les minuteurs.
Les appelants de KeSetTimer peuvent spécifier une heure d’expiration pour un minuteur. Pour définir un minuteur périodique, utilisez KeSetTimerEx.
Pour plus d’informations sur les objets du minuteur, consultez Objets du minuteur et PDC.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport),IrqlKeDispatchLte(wdm) |