Экстремальный разгон процессора

       

фрагмент драйвера, отвечающий за выбор нужного события


При деиницилизации драйвера крайне желательно "отобрать" доступ к команде RDPMC с прикладного уровня и остановить все ранее запущенные счетчики производительности, сбросив флажок Enable Counter в MSR-регистрах PerfEvtSel0/PerfEvtSel1 (код, приведенный ниже останавливает только PerfEvtSel0):

DriverUnload:              ; // процедура деиницилизации драйвера

       …

       ; // сбрасываем бит pce регистра cr4 для запрета чтения

       ; // счетчика производительности с пользовательского уровня

       MOV    EAX, CR4

       MOV    ECX, 100h

       NOT    ECX           ; // запрещаем доступ к RDPMC с прикладного уровня

       AND    EAX, ECX

       MOV    CR4, EAX

      

       ; // останавливаем счетчик производительности

       XOR    EDX, EDX

       XOR    EAX, EAX

       MOV    ECX, 186h

       WRMSR

       …



Содержание раздела