TOverlapped

WinApi тип данных TOverlapped

TOverlapped = record
Internal: DWORD;
InternalHigh: DWORD;
Offset: DWORD;
OffsetHigh: DWORD;
hEvent: THandle;
end;

Структура содежит информацию используемую при асинхронном вводе\выводе (Input\Output).

Internal: Зарезервировано для использования операционной системой. Этот элемент определяет системно-зависимый статус и находится в силе, если GetOverlappedResult возвращает ERROR_IO_PENDING с не установленной расширенной инфрмацией ошибки.

InternalHigh: Зарезервировано для использования операционной системой. Этот элемент определяет размер(длинну) переданных данных и находится в силе, если GetOverlappedResult возвращает True.

Offset: Позиция в файле начиная с которой надо запускать передачу. Позиция является байтовым смещением от начала файла. Вызывающий процесс устанавливает этот элемент перед вызовом функций ReadFile или WriteFile. Этот элемент игнорируется при чтении\записи в\из Канал(Pipe) или устройства связи и должно быть нулевым.

OffsetHigh: Старшее слово смещения позиции в файле начиная с которого надо запускать передачу. Этот элемент игнорируется при чтении\записи в\из Канал(Pipe) или устройства связи и должно быть нулевым.

hEvent: Хендл события устанавливаемый в сигналнье состояние по окончинии операции. Вызывающий процесс должен установить этот элемент в нуль или записать корректный хендл события перед вызовом перекрытых(overlapped) функций. Для того, чтобы создать обьект события надо вызывать функцию CreateEvent.

Такие функции как, например, WriteFile устанавливают событие в несигнальное состояние, до вызова операции ввода\вывода.

Замечания
Для того, чтобы определить закончиласьи ли операции ввода\вывода можно использовать макрос HasOverlappedIoCompleted. {Прим.пер.: Не знаю есть ли этот макрос в Дельфи, может и нет.}
Для отмены асинхронно операции ввода\вывода используйте функцию CancelIo.

Материал взят из:
Русская спpавка по Windows API



Последние из рубрики

ОтменитьДобавить комментарий