Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une routine de minuteur système permet généralement à l’appelant de spécifier une heure d’expiration absolue ou relative pour un minuteur. Par exemple, consultez KeWaitForSingleObject, KeSetTimer ou KeDelayExecutionThread. La précision avec laquelle le système d’exploitation peut mesurer les délais d’expiration est limitée par la granularité de l’horloge système.
L’heure système est mise à jour sur chaque graduation de l’horloge système et est exacte uniquement à la dernière graduation. Si l’appelant spécifie une heure d’expiration absolue, l’expiration du minuteur est détectée lors du traitement du premier cycle d'horloge du système qui se produit après le moment spécifié. Par conséquent, le minuteur peut expirer jusqu’à une période d’horloge système ultérieurement à l’heure d’expiration absolue spécifiée. Si un intervalle de minuteur ou une heure d’expiration relative est spécifié, l’expiration peut se produire jusqu’à une période antérieure ou une période ultérieure à l’heure spécifiée, selon l’endroit où se trouvent exactement les heures de début et de fin de cet intervalle entre les cycles d’horloge système. Indépendamment du fait qu’une heure absolue ou relative soit spécifiée, l’expiration du minuteur peut ne pas être détectée avant même plus tard si le traitement d’interruption de l’horloge système est retardé par le traitement des interruptions pour d’autres appareils.
Lorsque l’appelant spécifie une heure d’expiration relative, la routine du minuteur ajoute l’heure d’horloge système actuelle à l’heure d’expiration relative spécifiée pour calculer l’heure d’expiration absolue à utiliser pour le minuteur. Étant donné que l'heure système est précise uniquement jusqu'au dernier tic de l'horloge système, l'heure d'expiration calculée peut être jusqu'à une période d'horloge système antérieure à celle attendue par l'appelant. Si une heure d’expiration relative spécifiée est proche ou inférieure à la période d’horloge système, le minuteur peut expirer immédiatement, sans délai.
Un moyen possible de prendre en charge plus précisément les temps d’expiration plus courts consiste à diminuer le temps entre les cycles d’horloge système, mais cela est susceptible d’augmenter la consommation d’énergie. En outre, réduire la période de l'horloge du système pourrait ne pas permettre d'obtenir une granularité plus fine à moins que le traitement des interruptions pour les autres appareils de la plate-forme ne soit garanti pour ne pas retarder le traitement des interruptions de l'horloge du système.
À compter de Windows 8, KeDelayExecutionThread utilise une technique plus précise pour calculer l’heure d’expiration absolue à partir d’un délai d’expiration relatif spécifié par l’appelant. Tout d’abord, pour obtenir une estimation plus précise de l’heure système actuelle, la routine utilise le compteur de performances système pour mesurer le temps écoulé depuis la dernière graduation de l’horloge système. Ensuite, la routine ajoute cette estimation plus précise de l’heure système au temps d’expiration relatif pour calculer l’heure d’expiration absolue. Le temps d’expiration absolu calculé par cette technique est exact dans un microseconde. Par conséquent, le minuteur n’expirera pas avant le délai d’expiration relatif spécifié. Le minuteur peut toujours expirer jusqu’à une période d’horloge système ultérieure à l’heure spécifiée et peut expirer même plus tard si le traitement de l’interruption de l’horloge système est retardé par le traitement d’interruption pour d’autres appareils.
Si l’heure système change avant l’expiration d’un minuteur, un minuteur relatif n’est pas affecté, mais le système ajuste chaque minuteur absolu. Un minuteur relatif expire toujours après le nombre spécifié d’unités de temps écoulées, quelle que soit l’heure système absolue. Un minuteur absolu expire à une heure système spécifique, de sorte qu’une modification de l’heure système modifie la durée d’attente d’un minuteur absolu.