Quelle API utilise Windows Resource Monitor?

Windows Resource Monitor affiche (entre autres choses) quels fichiers sur le disque sont actuellement accessibles par quels processus. Et cela se fait en temps réel. Comment?

Je sais qu’il utilise probablement ETW et que je peux générer des traces avec des outils tels que xperf. Mais comment obtenir des informations en temps réel sans avoir à démarrer, arrêter et parsingr un fichier de trace?

J’ai besoin d’accéder par programmation aux données, c’est-à-dire à partir de C # ou de C ++.

w OpenTrace / ProcessTrace / StopTrace peut obtenir les données en temps réel tant que vous connaissez le GUID du fournisseur. Ils peuvent s’exécuter sur Win2000 mais vous devez parsingr les données brutes dans vos fonctions de rappel. Pour convertir les données brutes en texte lisible par l’homme, nous avons besoin du TMF / MOF. Pas sûr si elles sont publiques cependant.

Pour Vista / Win7, il existe un nouvel ensemble d’API TDH (Trace Data Helper) (par exemple: TdhFormatProperty). Faites défiler un peu des liens ci-dessus et vous pouvez les voir. La bonne chose à propos de TDH est qu’ils peuvent parsingr les données pour vous (encore besoin de fournir TDH le TMF / MOF si).

J’ai essayé d’écrire mon propre programme .tl à lisible .txt en utilisant l’API Open / Process / StopTrace (parce que je dois supporter XP). J’ai découvert que c’était assez difficile. Le fichier TMF n’est pas difficile à interpréter puisqu’il s’agit d’un texte pur. La difficulté est de déchiffrer plus de 50 structures internes différentes de spécifications de format prinf similaires. J’ai donc abandonné à la fin et je m’en tiens au puissant tracefmt.exe fourni dans Microsoft WDK.