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

       

фрагмент процедуры деиницилизации драйвера


Прикладная программа первым делом должна загрузить драйвер (пусть для определенности он будет называться 996.SYS), открыв его с помощью функции CreateFile. При этом управление получит процедура инициализации, открывающая доступ к машинной команде RDPMC, но сами счетчики производительности еще не заданы, так что читать, собственно говоря, нечего и незачем.

Нет никакой необходимости писать загрузку драйвера на ассемблере и лучше всего воспользоваться для этой цели языком Си:

// определения необходимых констант

#define PrefCtrl0          0x0000

#define DCU_MISS_OUTSTANDING      0x0048

// дескриптор драйвера 996

static HANDLE _996_handle = INVALID_HANDLE_VALUE;

int _996_init()

{

       if (_996_handle == INVALID_HANDLE_VALUE)

       {

              _996_handle = CreateFile("\\\\.\\996",GENERIC_READ,

                                  FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,

                                  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

             

              if (_996_handle == INVALID_HANDLE_VALUE) return 0;

       } return 1;

}



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