Fonction KeDelayExecutionThread (wdm.h)
La routine KeDelayExecutionThread place le thread actif dans un état d’attente alertable ou non modifiable pendant un intervalle spécifié.
Syntaxe
NTSTATUS KeDelayExecutionThread(
[in] KPROCESSOR_MODE WaitMode,
[in] BOOLEAN Alertable,
[in] PLARGE_INTEGER Interval
);
Paramètres
[in] WaitMode
Spécifie le mode processeur dans lequel l’appelant est en attente, qui peut être KernelMode ou UserMode. Les pilotes de niveau inférieur doivent spécifier KernelMode.
[in] Alertable
Spécifie TRUE si l’attente est alertable. Les pilotes de niveau inférieur doivent spécifier FALSE.
[in] Interval
Spécifie l’heure absolue ou relative, en unités de 100 nanosecondes, pour laquelle l’attente doit se produire. Une valeur négative indique l’heure relative. Les heures d’expiration absolues suivent toute modification de l’heure système ; les heures d’expiration relatives ne sont pas affectées par les changements d’heure système.
Valeur retournée
KeDelayExecutionThread retourne l’une des valeurs suivantes qui décrit comment le délai a été terminé :
Code de retour | Description |
---|---|
|
Le délai s’est terminé, car l’intervalle spécifié s’est écoulé. |
|
Le délai s’est terminé, car le thread a été alerté. |
|
Un APC en mode utilisateur a été remis avant l’expiration de l’intervalle spécifié. |
Notez que la macro NT_SUCCESS reconnaît toutes ces valeurs status comme des valeurs de « réussite ».
Remarques
L’heure d’expiration est calculée et le thread actuel est placé dans un état d’attente. Lorsque l’intervalle spécifié est passé, le thread quitte l’état d’attente et est placé dans l’état prêt, devenant éligible à l’exécution.
Le paramètre Alertable détermine quand le thread peut être alerté et son état d’attente par conséquent abandonné. Pour plus d’informations, consultez Waits and APCs.
Si le paramètre WaitMode est UserMode, la pile du noyau peut être permutée pendant l’attente. Par conséquent, un appelant ne doit jamais tenter de passer des paramètres sur la pile lors de l’appel de KeDelayExecutionThread à l’aide de l’argument UserMode .
Il est particulièrement important de case activée la valeur de retour de KeDelayExecutionThread lorsque le paramètre WaitMode est UserMode ou alertable a la valeur TRUE, car KeDelayExecutionThread peut revenir tôt avec un status de STATUS_USER_APC ou STATUS_ALERTED.
Toutes les attentes à long terme qui peuvent être abandonnées par un utilisateur doivent être des attentes UserMode et Alertable doit avoir la valeur FALSE.
Si possible, Alertable doit avoir la valeur FALSE et WaitMode doit être défini sur KernelMode, afin de réduire la complexité du pilote. La principale exception à cette ligne directrice est lorsque l’attente est une attente à long terme.
L’heure d’expiration du délai est exprimée soit comme une heure absolue à laquelle le délai doit expirer, soit une heure par rapport à l’heure système actuelle. Si la valeur du paramètre Interval est positive, l’heure d’expiration est une heure absolue. Si cette valeur est négative, l’heure d’expiration est une heure relative.
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.
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 | <= APC_LEVEL |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport),IrqlKeApcLte1(wdm), PowerIrpDDis(wdm) |