Сообщение Re[2]: Порты завершения и все что с ними связано от 20.05.2021 8:14
Изменено 20.05.2021 8:16 Optimus1
O>На всякий случай отвечу на вопрос типа 'а зачем он мне его возвращает я ведь его сам знаю?' — затем что если вы запустили 100500 параллельных WSASend, по этому указателю вы сможете понять к какому именно из них относится этот результат.
Вообще соответствие пакета, который мы достали из очереди с помощью GetQueuedCompletionStatus — и одного из 100500 параллельных WSASend — идентифицируется через CompletionKey.
O>Потому что внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит. GetQueuedCompletionStatus просто выковыривает вам оттуда нужный вам параметр документированным способом.
А поэтому вопрос остается, зачем тогда передавать адрес указателя на структуру WSAOVERLAPPED, чтобы в итоге получить ее адрес, если Вы сами говорите, что "внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит". То есть Вы противоречите сами себе получается ?
O>На всякий случай отвечу на вопрос типа 'а зачем он мне его возвращает я ведь его сам знаю?' — затем что если вы запустили 100500 параллельных WSASend, по этому указателю вы сможете понять к какому именно из них относится этот результат.
Вообще соответствие пакета, который мы достали из очереди с помощью GetQueuedCompletionStatus — и одного из 100500 параллельных WSASend — идентифицируется через CompletionKey.
O>Потому что внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит. GetQueuedCompletionStatus просто выковыривает вам оттуда нужный вам параметр документированным способом.
А поэтому вопрос остается, зачем тогда передавать адрес указателя на структуру WSAOVERLAPPED, чтобы в итоге получить ее адрес, если Вы сами говорите, что "внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит" и идентификация пакета и вызова WSASend определяется через CompletionKey, а кол-во отравленных или принятых байт определяется через второй параметр функции GetQueuedCompletionStatus.
То есть Вы противоречите сами себе получается ?