| Предыдущий | Следующий |
| WSAEACCES | WSAEINVAL |
WSAEFAULT
WSAEFAULT указывает на аргументы вызывающего процесса, а не на неудачный сетевой обмен. Winsock обнаружил, что буфер, указатель или структура адреса недопустимы для запрошенной операции либо переданная длина не описывает достаточный объём доступной для чтения или записи памяти.
Где обычно возникает ошибка
Типичные примеры — недопустимый указатель sockaddr , длина меньше размера структуры, необходимой для выбранного семейства адресов, или выходной буфер, который уже недействителен. В перекрывающихся вызовах все буферы и управляющие структуры должны оставаться действительными до тех пор, пока путь завершения не закончит их использовать; преждевременное освобождение или повторное использование памяти может превратить обычный ввод-вывод в трудно воспроизводимую ошибку.
Как диагностировать
- Проверьте время жизни, выравнивание и длину каждого принадлежащего вызывающей стороне буфера, переданного сбойному API.
- Записывайте в журнал семейство адресов и точную длину
sockaddr, а не только печатное представление адреса. - Используйте средства диагностики памяти и проверки утверждений в местах передачи владения при асинхронной отправке и приёме.
Microsoft: accept · Microsoft: sendto · The Open Group: sendto
Нужно найти другой код? Найти другой код состояния или ошибки.
