PdhGetFormattedCounterValue и правильный формат

Я пытаюсь понять API производительности, но у меня есть проблема, чтобы понять PdhGetFormattedCounterValue функция и dwFormat параметр.

Как узнать, какой формат выбрать при вызове этой функции?

Я нашел PDH_COUNTER_INFO структура на MSDN и увидел, что эта структура имеет dwType член, но я до сих пор не понимаю, как использовать эту структуру, чтобы получить информацию о формате счетчика для успешного вызова PdhGetFormattedCounterValue функция.

0

Решение

Вы можете выбрать.

Многие счетчики рассчитываются как доли или они масштабируются или оба, поэтому они имеют дробные части. Что делает PDH_FMT_DOUBLE хороший выбор.

Некоторые типы счетчиков никогда не имеют дробных частей. Вы мог прочитайте всю документацию и определите, какие из них, а затем добавьте два пути кода для обработки «счетчиков, которые могут быть дробными» и «счетчиков, которые не будут дробными», но это будет большой работой при очень небольшом выигрыше или его отсутствии.

Просто используйте PDH_FMT_DOUBLE,

Обновить

Для большинства счетчиков точность важна только при вычислении окончательного значения, которое происходит в библиотеке PDH. Но, как вы говорите, точность объемных итогов (таких как свободное место на диске) мог быть проблемой. К счастью, это не так.

Двойник имеет 52 бита значения. Для счетчика, указанного в байтах, в нем есть место для 4 петабайт без потери точности.

Но свободное место на диске указывается в мегабайтах, а не в байтах, поэтому двойной может сообщить до 272 байт или 4 зетабайта без потери точности. И я уверен, что вы не можете иметь ни одного тома больше 264 байт.

Использование памяти (процессов и т. Д.) Указывается в байтах, но значения всегда кратны размеру страницы (4096 байт), поэтому младшие 12 бит любого сообщаемого значения равны нулю. Следовательно, double может представлять объем памяти до 264 байты — то есть все 64-битное пространство памяти — без потери точности.

Точность не проблема. Просто используйте PDH_FMT_DOUBLE,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]