2013-07-26 36 views
2

我很習慣C#應用程序如何創建性能計數器的方式 - 只是實例化新的PerformanceCounter對象並使用它。C++中沒有lodctr的性能計數器

我現在被迫使用非託管C(C++?),並且我對使用API​​和示例提供的易用性感到非常不滿。我的主要痛點是需要使用lodctr加載清單,as is told in MSDN。我無法找到任何解決方案。有什麼辦法可以在沒有顯式加載清單的情況下使用性能計數器,就像我可以在C#中執行的那樣?

+0

[我已經下了類似的道路(http://stackoverflow.com/questions/7532767/programmatically-registering-a-performance-counter-in-the-註冊表)。據我所知,除了使用lodctr之外別無選擇。 – Luke

+0

有趣的是,如果您使用新的CounterSet API,則Lodctr路由現在也是C#應用的方法:https://msdn.microsoft.com/en-us/library/system.diagnostics.performancedata(v=vs .1px).aspx – piers7

+0

查看[LoadPerfCounterTextStrings](http://msdn.microsoft.com/en-us/library/windows/desktop/aa372187(v = vs.85).aspx)。不知道它是否正是你需要的,但它可能是一個好的開始。 – kreuzerkrieg

回答

-1

您想使用PDH(性能數據處理程序)庫。 基本流程是這樣的

// During startup call 
h = PdhOpenQuery() 
for each counter 
    PdhAddCounter(h ...) 

// When you want the data values call 
PdhCollectQueryData(h) 
for each counter 
    PdhGetFormattedCounterValue() 
+0

我發現只有一些例子如何使用PDH來讀取計數器,'PdhAddCounter'用於添加已經存在的計數器來查詢。有什麼方法可以創建我的perf計數器嗎? – nothrow

+0

我從來沒有提出新的性能計數器,只能訪問現有的計數器。 –