Если вам не нужен переносимый код, тогда лучше использовать Win32 напрямую.
Если вы укажете адрес структуры OVERLAPPED в качестве окончательного параметра, то позже вы получите информацию об асинхронной записи через эту структуру OVERLAPPED.Вам нужно открыть файл в режиме перекрытия.Кроме того, вы можете использовать WriteFileEx и предоставить обратный вызов завершения.Прочитайте MSDN документы для получения более подробной информации.
Обратите внимание, что вам все равно придется разумно разобраться со случаем, когда у вас есть I / O выдающийся на конвейере.Невозможно просто делать записи «запусти и забудь», игнорируя тот факт, что канал имеет ограниченную пропускную способность.В конце концов вы достигнете некоторого лимита пула буферов ядра и произойдет сбой ввода-вывода, возможно, сломая ваш канал до тех пор, пока он не будет перезапущен.
Это трудно понять, но есть много примеров в сети, чтобы помочь.Для дополнительной поддержки используйте порты завершения ввода-вывода, которые обеспечивают наивысшую производительность для асинхронного ввода-вывода в пользовательском режиме Windows.Не уверен на 100%, что это относится к каналам, но, конечно, к сокетам и файлам.