2011-05-11 3 views
2

Je travaille sur un pilote Windows NDIS utilisant le dernier WDK qui a besoin d'un compteur de temps de résolution à la milliseconde qui est monotoniquement non décroissant. J'ai regardé à travers MSDN ainsi que la documentation de WDK mais n'ai trouvé rien d'utile sauf quelque chose appelé TsTime, dont je ne suis pas sûr si c'est juste un nom inventé pour un exemple ou une variable réelle. Je suis au courant de NDISGetCurrentSystemTime, mais j'aimerais avoir quelque chose qui est plus bas-overhead comme des ticks ou des jiffies, à moins que NDISGetCurrentSystemTime lui-même soit à faible surcharge.Noyau Windows équivalent aux ticks de FreeBSD ou aux jiffies de Linux dans le dernier WDK

Il semble qu'il devrait y avoir une variable globale à faible surcharge qui stocke une sorte de compteur de temps du noyau. Quelqu'un a un aperçu de ce que cela peut être?

Répondre

1

Utilisez KeQueryTickCount. Et peut-être utiliser KeQueryTimeIncrement une fois pour être en mesure de convertir le nombre de tiques dans une unité de temps plus significative.

1

Que diriez-vous GetTickCount/GetTickCount64 (Vérifiez la reqs sur ce dernier)

+0

+1 Ceci est la meilleure minuterie bon marché si on la veut raisonnablement précise avec peu de frais généraux, mais pas nécessairement avec une haute résolution. – Damon

+0

Mon mauvais. Je n'avais pas réalisé qu'Alex liait le document à GetTickCount. J'ai également fait preuve de négligence en ne déclarant pas que j'utilise WDK pour développer le pilote NDIS, donc la fonction doit être disponible dans le dernier WDK, ce que GetTickCount ne semble pas être. La documentation Alex liée semble être Win2000. –

+0

Battu à KeQueryTickCount, également la note win2000 est la condition minimale - ce qui signifie, sauf indication contraire, est pris en charge dans toutes les versions ultérieures –

Questions connexes