我想解決舊的「How do I get a Windows Performance Counter for the current process」問題。基本上我是enumerating Process Object instances來獲得一個Process對象列表,然後我可以查詢他們的進程ID並與我自己進行比較。與當前進程的性能計數器競爭條件
在此基礎上,我可以使用正確的實例索引(創建一個類似於\Process(my_program#3)\<counter>
的東西),我就可以用它來查詢它是什麼計數器,我很感興趣,打造一個性能計數器路徑,但會發生什麼,如果一個或在PdhAddCounter呼叫之前my_program退出的其他實例更多?如果我理解正確,這意味着我現在的計數器路徑指向一個不同的進程或現在無效。他們甚至可能在查詢進程ID時消失...
如何防止計數器路徑無效,然後才能使用它來獲取計數器句柄?
我很確定現有櫃檯的路徑不會改變。實例可能會來來去去,最終會導致回收標識符(以及路徑),但只要您的實例存在,我很確定它將具有相同的標識符(以及路徑)。如果情況並非如此,我會感到震驚。 – Luke
@Luke:不幸的是路徑變得無效。當另一個實例已經啓動時,通過在調試器中打開程序很容易證明這一點,然後逐步讓程序確定正確的實例(#1),然後手動關閉第一個實例,然後再次步進以允許程序查詢櫃檯 - 他們不會工作。 – villintehaspam