и передающей ей код интересующего
} return 1;
}
Листинг 6 прикладная функция, загружающая драйвер в память
Тоже самое относится и к функции, вызывающей DeviceIoControl и передающей ей код интересующего нас события. На языке Си она выглядит гораздо нагляднее:
int _996_select(int xCode, int REG)
{
DWORD x;
if (REG != PrefCtrl0) return 0;
// если программист забыл загрузить драйвер,
// данная функция делает это самостоятельно
if (_996_handle == INVALID_HANDLE_VALUE) _996_init();
// если загрузка драйвера провалилась сваливаем отсюда
if (_996_handle == INVALID_HANDLE_VALUE) return 0;
return DeviceIoControl(_996_handle, xCode, &x,0, &x, 0, &x, 0);
}
Листинг 7 прикладная функция, позволяющая выбирать интересующее нас событие для его мониторинга
Процедура закрытия драйвера должна просто вызывать CloseHandle, а все остальное за нас сделает сам драйвер. Впрочем, драйвер можно и не закрывать. При выходе из приложения операционная система сделает это автоматически.
int _996_exit()
{
if (_996_handle != INVALID_HANDLE_VALUE)
{
CloseHandle(_996_handle);
}
return 1;
}
Листинг 8 прикладная функция выгружающая драйвер из памяти
А вот при снятии показаний со счетчиков производительности без ассемблера уже не обойтись! Для упрощения программирования можно использовать ассемблерные вставки, хоть это и является признаком дурного тона, затрудняющих перенос программы на другие платформы и препятствующей ее компиляции другим компилятором. Правильным решением было бы создание отдельного ассемблерного модуля, но это слишком хлопотно, тем более, что мы пишем не коммерческую программу, а всего лишь демонстрационный макет.
// ИНИЦИЛИЗАЦИЯ ДРАЙВЕРА 996
if (_996_init()==0) return printf("-ERR: 996 driver not loaded!\n");
// ВЫБОР СОБЫТИЯ ДЛЯ МОНИТОРИНГА И ЗАПУСК СЧЕТЧИКА
_996_select(DCU_MISS_OUTSTANDING, PrefCtrl0);
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий