我想要獲得我的(Delphi XE)應用程序中每個(最多200個)線程的CPU利用率。爲此做準備,我傳遞給PdhExpandWildCardPath一個字符串'\Thread(myappname/*)\% Processor Time'
。但是(在Win7/64上)從該函數返回的緩衝區爲系統中運行的每個線程返回一個字符串,換句話說,它似乎已經將輸入看作是'\Thread(*/*)\% Processor Time'
。這是意想不到的。當我隨後擴展字符串以獲得「ID線索」時,會發生同樣的情況。PdhExpandWildCardPath返回太多路徑
很明顯,我可以過濾應用程序名稱上的結果字符串,只添加我需要的計數器,但這需要數百個子字符串掃描。我誤解了通配符是如何工作的?
僅僅枚舉你自己的進程中的線程和構建這些名字就不那麼容易了嗎? – 2011-02-25 11:36:14
爲什麼不爲每個線程使用GetThreadTimes? – Misha 2011-02-25 13:48:33
@David:懶惰,我已經完成了通配符代碼。但是,謝謝,我現在已經改變了我的代碼,首先枚舉線程,並且更快。而且我仍然認爲通配符擴展很奇怪。 – frogb 2011-02-25 15:36:54