Comment GetThreadTimes rapporte-t-il le temps passé en hibernation?

J’utilise actuellement GetThreadTimes pour me dire combien de temps je passe dans la boucle d’événements de mon application.

Je me demande comment cela sera affecté par l’hibernation. Le temps d’hibernation est-il signalé? Ou peut-être comme heure du système? Le comportement est-il identique sur toutes les versions de Windows?

Notez que j’ai posé la même question pour Posix ici .

Non, l’heure d’hibernation n’est pas rapscope

Comment pourrait-il?

En mode hibernation, l’ordinateur est éteint , aucune timer ne s’affiche et aucun comptage n’a lieu.
Les temporisations que vous voyez avec GetThreadTimes sont calculées à chaque tick (c.-à-d. Une interruption) du minuteur système 1 .

J’ai créé un petit programme en C pour tester cela.
Il enregistre les durées toutes les 1000 ms, je le lance et je veille en hibernation sur mon ordinateur portable (à 9 secondes environ).
Comme il fallait s’y attendre, chaque ligne correspond à environ 1000 ms de la précédente.

Aucun manque de comptage

Par conséquent, l’heure d’hibernation ne compte ni comme heure système ni comme heure utilisateur.

Je ne sais pas si cela est cohérent avec toutes les anciennes versions de Windows, en particulier celles qui ont un sens différent d’hibernation, mais vous pouvez vous attendre à ce que cela soit cohérent entre toutes les versions importantes.

1 HPET, timer LAPIC ou le bon vieux PIT, selon ce qui est disponible