Я столкнулся со странной проблемой в Vista с API мониторинга производительности. В настоящее время я использую код, который отлично работал на XP / 2k, основанный на PdhGetFormattedCounterValue (). Я начинаю использовать PdhExpandWildCardPath для расширения счетчиков (меня интересует общая статистика сети), счетчики, на которые я смотрю:
\\Network Interface(*)\\Bytes Received/sec
\\Network Interface(*)\\Bytes Sent/sec
\\Processor(_Total)\\% Processor Time
Проблема в том, что при первом вызове они возвращают PDH_INVALID_DATA, я не думаю, что это проблема, поскольку, если я сделаю запрос снова, я начну получать данные без ошибки. Проблема в том, что, хотя процессорное время работает точно так, как ожидалось, ни один из счетчиков сетевого интерфейса ничего не возвращает - просто 0 все время. Я с помощью Perfmon проверил, что они сообщают данные нормально, поэтому я не знаю, в чем может быть проблема. Я поймал это в MS:
http://support.microsoft.com/?scid=kb%3Ben-us%3B287159&x=11&y=9
Но меня не интересует многоязычность для моей задачи, поэтому я не думаю, что это актуально. Я посмотрю, смогу ли я придумать какой-нибудь базовый код, показывающий, что именно я делаю, но ничего не возвращает ничего странного, и это работало на XP / 2k, поэтому я подозреваю, что что-то изменилось под капотом. Спасибо!