IOCP и WSABUF
От: Gomes Россия http://irazin.ru
Дата: 11.02.10 08:47
Оценка: 1 (1)
В темах:
http://rsdn.ru/forum/network/3697233.aspx
Автор: MazkoK
Дата: 08.02.10

http://rsdn.ru/forum/network/3441036.aspx
Автор: Armastab
Дата: 24.06.09

обсуждался вопрос, используют ли функции WSASend/WSARecv входные параметры _после_ прихода завершения на GetQueuedCompletionStatus, но _до_ выхода из этих функций.
Я, с некоторыми другими товарищами, активно настаивал что нет, не используют. Подразумевая, конечно, структуру OVERLAPPED, как основной объект.. хм.. динамизма И это так, её не используют.
Но есть другая проблема — структура WSABUF. Её таки держат:

If this function is completed in an overlapped manner, it is the Winsock service provider's responsibility to capture the WSABUF structures before returning from this call. This enables applications to build stack-based WSABUF arrays pointed to by the lpBuffers parameter.
http://msdn.microsoft.com/en-us/library/ms742203(VS.85).aspx

Т.е. эти структуры надо создавать на стеке. Я всегда делал только так, и поэтому с проблемами нарушения доступа не сталкивался.
А вот кое-кто пихает куда не следует

Вывод: Читаем мануалы — они рулез.

З.Ы. В свете этого, хотелось бы глянуть код asio 1.4.4 из boost 1.4
Автор: awson
Дата: 09.02.10
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.