Драйверы устройств в системе Windows


Приложение WINTEST


     Приложение  wintest.c,  показывающее  работу  ввода-вывода   (см. листинг  5),  состоит  главным  образом  из  немодульного  диалогового блока,  в  котором  непрерывно  высвечивается  количество  прерываний, обработанных с начала работы программы.

     Программа  MainDlgProc  вызывает  программу  BogusStart  во время выполнения WM_INITDIALOG,  передавая в  качестве параметра  обработчик окна  диалогового  блока.  Программа  ISR  регистрирует  сообщения   к данному  обработчику   в  тех   случаях,  когда   счетчик   прерываний изменяется от нуля к единице.

     Программа  MainDlgProc  сохраняет   текущее  суммарное   значение счетчика в переменной wCountTotal.  Всякий раз, когда диалог  получает сообщение  WM_COMMAND  с  параметром  wParam,  равным  IDM_BOGUSEVENT, программа  обновляет  суммарный  счетчик,  отображаемый  в  диалоговом блоке.  Следует   отметить,  что   хотя  программа   ISR  регистрирует сообщение только тогда,  когда счетчик изменяется  от нуля к  единице, возможна (и весьма вероятно) обработка количества прерываний до  того, как  сообщение   WM_COMMAND  фактически   будет  передано   диалоговой процедуре.  Методика,  показанная  в  данной  программе,  при  которой программа ISR  регистрирует сообщение  только при  первом переходе,  а программа  BogusCheck  чистит  счетчик,  обеспечивает  точный  подсчет количества прерываний,  даже если  на уровне  приложения нельзя учесть каждое прерывание в момент его возникновения.

     При  выполнении  данной  программы  можно  наблюдать, что счетчик прерывания  в  диалоговом  блоке  непрерывно  увеличивается,  указывая количество выполненных операций ввод-вывода.

_____________________________________________________________________

#include

#include "bogus.h"

#include "wintest.h"

HANDLE hPgmInstance ;

#define IDM_BOGUSEVENT  0x3000

 

void CenterWindow(HWND hWnd)

     {

     int xSize, ySixe, xPos, yPos ;

     RECT rc ;

 

     xSize = GetSystemMetrics(SM_CXSCREEN) ;




- Начало -  - Назад -  - Вперед -