Подъем. Asio содержит классы, позволяющие выполнять асинхронные операции чтения и записи на Windows HANDLE
, такие как названные трубы.
Например, для выполнения асинхронных операций на названной трубе может быть создан следующий объект:
HANDLE handle = ::CreateFile(...);
windows::stream_handle pipe(my_io_service, handle);
Затем они используются в качестве синхронных или асинхронных потоков чтения и записи. Это означает, что объекты могут использоваться с любым из read(), async_read(), write(), async_write(), read_until() или async_read_until() бесплатные функции.
Объект ядра, упомянутый HANDLE
, должен поддерживать использование с портами завершения I/O (что означает, что названные трубы поддерживаются, но анонимных труб и консольных потоков нет).
windows::stream_handle, windows::basic_stream_handle, windows::stream_handle_service.
Windows stream HANDLE
s доступны только во время компиляции, когда нацеливаются на Windows, и только тогда, когда используется предыдущая версия I/O (что является по умолчанию). Программа может проверить для макро BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE
, чтобы определить, поддерживаются ли они.