Информация об изменениях

Сообщение Re[2]: Порты завершения и все что с ними связано от 20.05.2021 8:14

Изменено 20.05.2021 8:16 Optimus1

Re[2]: Порты завершения и все что с ними связано
Здравствуйте, ononim, Вы писали:


O>На всякий случай отвечу на вопрос типа 'а зачем он мне его возвращает я ведь его сам знаю?' — затем что если вы запустили 100500 параллельных WSASend, по этому указателю вы сможете понять к какому именно из них относится этот результат.


Вообще соответствие пакета, который мы достали из очереди с помощью GetQueuedCompletionStatus — и одного из 100500 параллельных WSASend — идентифицируется через CompletionKey.


O>Потому что внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит. GetQueuedCompletionStatus просто выковыривает вам оттуда нужный вам параметр документированным способом.


А поэтому вопрос остается, зачем тогда передавать адрес указателя на структуру WSAOVERLAPPED, чтобы в итоге получить ее адрес, если Вы сами говорите, что "внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит". То есть Вы противоречите сами себе получается ?
Re[2]: Порты завершения и все что с ними связано
Здравствуйте, ononim, Вы писали:


O>На всякий случай отвечу на вопрос типа 'а зачем он мне его возвращает я ведь его сам знаю?' — затем что если вы запустили 100500 параллельных WSASend, по этому указателю вы сможете понять к какому именно из них относится этот результат.


Вообще соответствие пакета, который мы достали из очереди с помощью GetQueuedCompletionStatus — и одного из 100500 параллельных WSASend — идентифицируется через CompletionKey.


O>Потому что внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит. GetQueuedCompletionStatus просто выковыривает вам оттуда нужный вам параметр документированным способом.


А поэтому вопрос остается, зачем тогда передавать адрес указателя на структуру WSAOVERLAPPED, чтобы в итоге получить ее адрес, если Вы сами говорите, что "внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит" и идентификация пакета и вызова WSASend определяется через CompletionKey, а кол-во отравленных или принятых байт определяется через второй параметр функции GetQueuedCompletionStatus.
То есть Вы противоречите сами себе получается ?