2013-07-26 2 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

Интересно, что маршрут Lodctr теперь подходит и для приложений C#, если вы используете новый API CounterSet: https://msdn.microsoft.com/en-us/library/system.diagnostics.performancedata(v=vs .110) .aspx – piers7

+0

Взгляните на [LoadPerfCounterTextStrings] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa372187 (v ​​= vs.85) .aspx). Не уверен, что это именно то, что вам нужно, но это может быть хорошим началом. – kreuzerkrieg

ответ

-1

Вы хотите использовать библиотеку PDH (Performance Data handler). Основной поток идет как этот

// 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' служит для добавления уже существующего счетчика к запросу. Есть ли какой-либо метод, как я могу создать свои счетчики? – nothrow

+0

Я никогда не делал новых счетчиков производительности, только доступ к существующим. –