Реферат: Ещё раз о прямом доступе к аппаратуре

Ключевой метод

procedure TComWatchdogThread.Execute;

var

// структура, используемая Win32 для хранения внутренней информации при

// асинхронной работе. Ничего кроме поля hEvent нам от неё не требуется

eOverlapped: TOverlapped;

// запрос ожидания асинхронного события изменения состояния порта

//...........................................................................

procedure InitWaitCommEvent;

var

eEventMask: DWORD;

begin

// ошибки ERROR_IO_PENDING нужно просто игнорировать - их наличие означает

// только то, что последняя операция с портом ещё не завершена.

// Что интересно, нельзя дважды подряд вызвать WaitCommEvent, т.е.

// запросил событие - значит, дождись его.

if not WaitCommEvent(FComHandle, eEventMask, @eOverlapped)

and (GetLastError <> ERROR_IO_PENDING) then

RaiseLastOSError;

end;

var

// TWOHandleArray - этопростоготовыймассивиз 64 хендловдля

// функции WaitForMultipleObjects. Мы используем только 3 хендла,

// но для простоты воспользуемся готовым массивом на 64, чтобы

// не связываться с ручным распределением памяти.

eHandles: TWOHandleArray;

eTime: Int64;

eStatus: DWORD;

eStubInstalled: Boolean;

К-во Просмотров: 190
Бесплатно скачать Реферат: Ещё раз о прямом доступе к аппаратуре