WinApi: WSASend и GetQueuedCompletionStatus

Собственно вот такой вопрос:

Есть две функции: WSASend и GetQueuedCompletionStatus. Обе функции одним из параметров принимают структуру WSAOVERLAPPED, в которую что то там записывают.

В случае с WSASend-GetQueuedCompletionStatus в WSAOVERLAPPED идет запись в параметр WSAOVERLAPPED.InternalHigh — то кол-во байт, которое якобы отправлено на данный момент функцией WSASend.

И вот вопрос:

1)Получается, что приходится для одной и той же операции Send создавать две структуру и два раза ее передавать, но, если WSASend используется совместно с портами завершения, то информацию пользователь же получает из очереди порта завершения посредством функции GetQueuedCompletionStatus куда я и передаю дублированную структуру WSAOVERLAPPED. Зачем же тогда две структуры передавать ?

2)И второй вопрос: у функции GetQueuedCompletionStatus — второй параметр это:

Указатель на переменную, которая получает количество байтов, переданных в завершенной операции ввода-вывода.

и соответственно, как уже писал выше 4ый параметр — это структура WSAOVERLAPPED, которая так в один из своих полей получает — "количество байтов, переданных в завершенной операции ввода-вывода.". Зачем тогда нужен второй параметр ? Или зачем тогда вообще передавать WSAOVERLAPPED, если есть второй параметр, куда GetQueuedCompletionStatus и так запишет нужное кол-во байт ?


Ответы (0 шт):