WinApi: WSASend и GetQueuedCompletionStatus
Собственно вот такой вопрос:
Есть две функции: WSASend и GetQueuedCompletionStatus. Обе функции одним из параметров принимают структуру WSAOVERLAPPED, в которую что то там записывают.
В случае с WSASend-GetQueuedCompletionStatus в WSAOVERLAPPED идет запись в параметр WSAOVERLAPPED.InternalHigh — то кол-во байт, которое якобы отправлено на данный момент функцией WSASend.
И вот вопрос:
1)Получается, что приходится для одной и той же операции Send создавать две структуру и два раза ее передавать, но, если WSASend используется совместно с портами завершения, то информацию пользователь же получает из очереди порта завершения посредством функции GetQueuedCompletionStatus куда я и передаю дублированную структуру WSAOVERLAPPED. Зачем же тогда две структуры передавать ?
2)И второй вопрос: у функции GetQueuedCompletionStatus — второй параметр это:
Указатель на переменную, которая получает количество байтов, переданных в завершенной операции ввода-вывода.
и соответственно, как уже писал выше 4ый параметр — это структура WSAOVERLAPPED, которая так в один из своих полей получает — "количество байтов, переданных в завершенной операции ввода-вывода.". Зачем тогда нужен второй параметр ? Или зачем тогда вообще передавать WSAOVERLAPPED, если есть второй параметр, куда GetQueuedCompletionStatus и так запишет нужное кол-во байт ?