KeSetTimerEx, fonction (wdm.h)
La routine KeSetTimerEx définit l’intervalle absolu ou relatif auquel un objet minuteur doit être défini sur un état signalé, fournit éventuellement un CustomTimerDpc routine à exécuter lorsque cet intervalle expire, et fournit éventuellement un intervalle périodique pour le minuteur.
Syntaxe
BOOLEAN KeSetTimerEx(
[in, out] PKTIMER Timer,
[in] LARGE_INTEGER DueTime,
[in] LONG Period,
[in, optional] PKDPC Dpc
);
Paramètres
[in, out] Timer
Pointeur vers un objet minuteur 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 temps 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 modifications de temps système.
[in] Period
Spécifie un intervalle périodique facultatif pour le minuteur en millisecondes. Doit être une valeur supérieure ou égale à zéro. Si la valeur de ce paramètre est égale à zéro, le minuteur est un minuteur nonperiodic qui ne se met pas automatiquement en file d’attente.
[in, optional] Dpc
Pointeur vers un objet DPC initialisé par KeInitializeDpc. Ce paramètre est facultatif.
Valeur de retour
Si l’objet minuteur était déjà dans la file d’attente du minuteur système, KeSetTimerEx retourne TRUE.
Remarques
La routine KeSetTimerEx effectue les opérations suivantes :
Calcule le délai d’expiration.
Définit le minuteur à un état non signalé.
Définit l’intervalle périodique du minuteur, s’il a été spécifié.
Insère l’objet minuteur dans la file d’attente du minuteur système.
Si l’objet minuteur était 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 à KeSetTimerEx avant le DueTime précédemment spécifié a expiré annule à la fois le minuteur et l’appel au Dpc, le cas échéant, associé à l’appel précédent.
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 lorsqu’un minuteur expire est limité par la granularité de l’horloge système. Pour plus d’informations, consultez précision du minuteur.
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 est défini sur un état 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 à exécuter dès que les conditions sont autorisées après l’expiration de l’intervalle du minuteur.
Une routine DPC ne peut pas libérer un minuteur périodique. Une routine DPC peut libérer un minuteur nonperiodicique.
Notez qu’un minuteur périodique est redémarré automatiquement dès son expiration. Ainsi, sur un ordinateur multiprocesseur, le DPC d’un minuteur périodique peut s’exécuter simultanément sur deux processeurs.
Une seule instanciation d’un objet DPC donné peut être mise en file d’attente à un moment donné. Pour éviter les conditions de course potentielles, le DPC passé à KeSetTimerEx ne doit pas être passé à KeInsertQueueDpc.
Les pilotes doivent annuler les minuteurs actifs dans leurs routines Décharger. Utilisez KeCancelTimer pour annuler les minuteurs.
Pour plus d’informations sur les objets du minuteur, consultez objets de minuteur et les contrôleurs de domaine.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 2000. |
plateforme cible | Universel |
d’en-tête | wdm.h (include 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) |