Вы можете использовать RDPMC инструкция или __ readpmc Встроенный компилятор MSVC, что одно и то же.
Однако Windows запрещает приложениям пользовательского режима выполнять эту инструкцию, задав для CR4.PCE значение 0. Предположительно, это делается потому, что значение каждого счетчика определяется регистрами MSR, которые доступны только в режиме ядра. Другими словами, если вы не являетесь модулем режима ядра (например, драйвером устройства), вы получите ловушку «привилегированной инструкции», если попытаетесь выполнить эту инструкцию.
Если вы пишете приложение в пользовательском режиме, ваша единственная возможность (как упомянул @Christopher в комментариях) - написать модуль ядра, который будет выполнять эту инструкцию для вас (вы будете подвергаться штрафу пользователя-> за вызовы ядра) и включите тестовую подпись на вашем компьютере, чтобы ваш «самозаверяющий» драйвер мог быть загружен. Это означает, что вы не можете легко распространять это приложение, но это подойдет для внутренней настройки.