Здравствуйте, Kubyshev Andrey, Вы писали: KA>А насколько я понимаю она не перекладывает себе данные. если ты их разрушишь до того как она пошлет, то будет ошибка.
Как только WSASend завершилась с WSA_IO_PENDING делаю с данными что хочу — проблем не наблюдал (ну что ж, потестирую еще и в этом ключе),
а вот размер невыгружаемой памяти ядра временно увеличивается, что можно объяснить как дублирование (кэширование) моих данных системой
KA>У тебя уже есть IOCP. Тогда делается так, в WSAsend передается не overlapped а твоя структура большего размера в котором только начало overlapped.
Да, так и есть.
KA>Когда wsasend произойдет, ты получишь указатель на свою структуру (он же на overlapped). Исходя из нее, поймешь какие буфера посланы и что можно освобождать. KA>Очень удобно в одном потоке создаешь буферы и в сенд, в другом получаешь completition и освобождаешь (или складываешь в пустые)
Как раз это таки и не удобно, — зачем накладывать дополнительные ограничения на 'пользователя' или же 'самому' дублировать данные.
Вот м$ные ребята и сказали: нате асинхронную отсылку, а мы там сами уже, нам виднее как. (Ну, это я так думаю, — вроде логично.)