Partager via


KeSetTimerEx, fonction (wdm.h)

La routine KeSetTimerEx définit l’intervalle absolu ou relatif auquel un objet de minuteur doit être défini sur un état signalé, fournit éventuellement une routine CustomTimerDpc à exécuter à l’expiration de cet intervalle 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 de 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, le délai d’expiration est relatif à 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 temps d’expiration absolus suivent les modifications apportées à l’heure système ; les temps d’expiration relatifs ne sont pas affectés par les changements d’heure 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 zéro, le minuteur est un minuteur nonpédique 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 renvoyée

Si l’objet minuteur se trouvait 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 sur un état non signalé.

  • Définit l’intervalle périodique du minuteur, le cas échéant.

  • 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 à KeSetTimerEx avant l’expiration de dueTime précédemment spécifié 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 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.

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 pour être exécuté dès que les conditions le permettent 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 non périodique.

Notez qu’un minuteur périodique est automatiquement redémarré dès qu’il expire. 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 tous les minuteurs actifs dans leurs routines de déchargement . Utilisez KeCancelTimer pour annuler les minuteurs.

Pour plus d’informations sur les objets du minuteur, consultez Objets de minuteur et DPC.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
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)

Voir aussi

KeCancelTimer

KeInitializeDpc

KeInitializeTimer

KeInitializeTimerEx

KeReadStateTimer

KeWaitForMultipleObjects

KeWaitForSingleObject