Может ли кто-нибудь предложить надежный способ обработки системных ошибок в случае использования перекрывающихся сокетов IO и IOCP?
Описание MSDN в этом аспекте громоздко. В нем говорится, что для GetQueuedCompletionStatus
кода возврата FALSE должен быть последующий вызов GetLastError
для получения кода ошибки при неудачной операции. Однако мы знаем, что для WSA-функций вместо этого следует вызывать WSAGetLastError
(GetLastError
возвращает 0 при ошибке сокета). Итак, первая часть вопроса - как это работает на практике?
Другая проблема заключается в обработке ошибок, если пакеты завершения извлекаются GetQueuedCompletionStatusEx
. MSDN описывает только обработку ошибок для самого этого вызова, ничего не говоря о получении кодов ошибок отдельных неудачных операций.
Заранее спасибо за все ответы и комментарии.