Вы можете выбрать.
Многие счетчики рассчитываются как фракции или они масштабируются или оба, поэтому они имеют дробные части. Что делает PDH_FMT_DOUBLE
хорошим выбором.
Некоторые типы счетчиков никогда не имеют дробных частей. You может прочитать всю документацию и разработать, а затем добавить два пути кода, чтобы обрабатывать «счетчики, которые могут быть дробными» и «счетчики, которые не будут дробными», но это было бы очень много для очень мало или нет.
Просто используйте PDH_FMT_DOUBLE
.
Update
Для большинства счетчиков точность только беспокойство при расчете окончательной стоимости, которая происходит в библиотеке PDH. Но, как вы говорите, точность массовых итогов (например, свободного места на диске) может быть проблемой. К счастью, это не так.
Двойник имеет 52 бит значимости. Для счетчика, сообщенного в байтах, у него есть место для 4 петабайт без какой-либо потери точности.
Но свободное место на диске сообщается в мегабайтах, а не в байтах, поэтому двойной может сообщать до 2 байтов или 4 зеттабайта без потери точности. И я уверен, что вы не можете иметь один том больше, чем 2 байтов.
Использование памяти (процессов и т. Д.) Сообщается в байтах, но значения всегда кратно размеру страницы (4096 байт), поэтому нижние 12 бит любого сообщенного значения равны нулю. Следовательно, double может представлять собой размер памяти до 2 байтов - то есть весь 64-разрядный объем памяти - без потери точности.
Прецизионность не является проблемой. Просто используйте PDH_FMT_DOUBLE
.
Привет, я думал немного о вашем комментарии, и я думаю, что у меня могут возникнуть проблемы с точностью при использовании только удвоений. На серверных системах с большим количеством ОЗУ или с большими жесткими дисками это может вызвать проблемы. – roohan
Я обновил свой ответ. – arx