Разработка приложений WinAPI система сообщений
Разработка приложений WinAPI система сообщений. Асинхронный ввод-вывод
Асинхронный ввод/вывод
. При обычном вводе/выводе функция ввода/вывода (FileWrite/Read, Write/ReadFile(Ex), BlockRead/Write, TFileStream.Read/Write) возвратит управление только после того, как полностью выполнится операция ввода/вывода. А если используется носитель с медленной скоростью чтения/записи, или производится обработка больших объёмов данных, то программа «подвиснет» на время чтения/записи. При асинхронном вводе/выводе функция сразу же возвращает управление, и программа продолжает выполняться дальше без задержек. Эта технология может пригодиться для разработки программ для взаимодействия с внешними устройствами с низкой скоростью передачи данных, например сотовыми телефонами, устройствами BlueTooth или IrDA.
Асинхронный ввод/вывод не может осуществить ни одна из родных Delphi функций: ни функции FileRead/FileWrite, ни функции, доставшиеся нам от pascal BlockRead/BlockWrite, ни класс TFileStream. Асинхронный ввод/вывод можно осуществить только через API функции.
Взаимодействие с файлами через API осуществляется с помощью функций: CreateFile, ReadFile/WriteFile, CloseHandle. Так как не все знают, как работать с файлами через API, то вскользь вспомним каждую из них.