我很習慣C#應用程序如何創建性能計數器的方式 - 只是實例化新的PerformanceCounter
對象並使用它。C++中沒有lodctr的性能計數器
我現在被迫使用非託管C(C++?),並且我對使用API和示例提供的易用性感到非常不滿。我的主要痛點是需要使用lodctr加載清單,as is told in MSDN。我無法找到任何解決方案。有什麼辦法可以在沒有顯式加載清單的情況下使用性能計數器,就像我可以在C#中執行的那樣?
我很習慣C#應用程序如何創建性能計數器的方式 - 只是實例化新的PerformanceCounter
對象並使用它。C++中沒有lodctr的性能計數器
我現在被迫使用非託管C(C++?),並且我對使用API和示例提供的易用性感到非常不滿。我的主要痛點是需要使用lodctr加載清單,as is told in MSDN。我無法找到任何解決方案。有什麼辦法可以在沒有顯式加載清單的情況下使用性能計數器,就像我可以在C#中執行的那樣?
您想使用PDH(性能數據處理程序)庫。 基本流程是這樣的
// During startup call
h = PdhOpenQuery()
for each counter
PdhAddCounter(h ...)
// When you want the data values call
PdhCollectQueryData(h)
for each counter
PdhGetFormattedCounterValue()
我發現只有一些例子如何使用PDH來讀取計數器,'PdhAddCounter'用於添加已經存在的計數器來查詢。有什麼方法可以創建我的perf計數器嗎? – nothrow
我從來沒有提出新的性能計數器,只能訪問現有的計數器。 –
[我已經下了類似的道路(http://stackoverflow.com/questions/7532767/programmatically-registering-a-performance-counter-in-the-註冊表)。據我所知,除了使用lodctr之外別無選擇。 – Luke
有趣的是,如果您使用新的CounterSet API,則Lodctr路由現在也是C#應用的方法:https://msdn.microsoft.com/en-us/library/system.diagnostics.performancedata(v=vs .1px).aspx – piers7
查看[LoadPerfCounterTextStrings](http://msdn.microsoft.com/en-us/library/windows/desktop/aa372187(v = vs.85).aspx)。不知道它是否正是你需要的,但它可能是一個好的開始。 – kreuzerkrieg