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