Порты завершения и все что с ними связано
От: Optimus1  
Дата: 16.05.21 11:12
Оценка:
Здравствуйте,

Позвольте создать тему про порты завершения.

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

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

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

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



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

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


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

Что то я запутался.
winsock winsock2 c++ completion port
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.