J'essaie d'obtenir l'utilisation du processeur de chacun des threads (jusqu'à 200) dans mon application (Delphi XE). Pour préparer cela, je passe à PdhExpandWildCardPath une chaîne '\Thread(myappname/*)\% Processor Time'
. Cependant (sur Win7/64) le tampon retourné par cette fonction retourne une chaîne pour chaque thread en cours d'exécution dans le système, en d'autres termes il semble avoir traité l'entrée comme si elle était '\Thread(*/*)\% Processor Time'
. C'était inattendu. La même chose se produit lorsque je développe par la suite une chaîne pour obtenir 'ID Thread'.PdhExpandWildCardPath renvoie trop de chemins
De toute évidence, je peux filtrer les chaînes résultantes sur le nom de l'application et ajouter uniquement les compteurs dont j'ai besoin, mais cela nécessite plusieurs centaines d'analyses de sous-chaînes. Ai-je mal interprété le fonctionnement des caractères génériques?
Ne serait-il pas plus simple d'énumérer les threads dans votre propre processus et de construire les noms de cette façon? –
Pourquoi n'utilisez-vous pas simplement GetThreadTimes pour chacun de vos threads? – Misha
@David: paresse, j'avais déjà fait le code wild-card. Mais merci, j'ai maintenant changé mon code pour énumérer les threads d'abord et c'est beaucoup plus rapide. Et je pense toujours que l'expansion de la wild-card est étrange. – frogb