Повышаю. Asio предоставляет Классы Windows, которые позволяют выполнять асинхронные операции чтения и записи на HANDLE, которые относятся к обычным файлам.
Например, для выполнения асинхронных операций на файле может быть создан следующий объект:
HANDLE handle = ::CreateFile(...);
windows::random_access_handle file(my_io_service, handle);
Данные могут быть прочитаны или записаны на ручку с использованием одной из функций<read_some_at()
>,<async_read_some_at()
>,<write_some_at()
>или<async_write_some_at()
>. Однако, как и эквивалентные функции (<read_some()
>и т.д.) в потоках, эти функции требуются только для передачи одного или нескольких байтов в одной операции. Следовательно, свободные функции называютсяread_at().,async_read_at(),write_at()иasync_write_at()были созданы для многократного вызова соответствующей функции<*_some_at()
>до передачи всех данных.
windows::random_access_handle,windows::basic_random_access_handle,windows::random_access_handle_service.
Случайный доступ к Windows<HANDLE
>доступен только во время компиляции при нацеливании на Windows и только тогда, когда используется сервер порта завершения ввода/вывода (который является по умолчанию). Программа может тестировать макрос<BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE
>, чтобы определить, поддерживаются ли они.