| Предыдущий | Следующий |
| WSAEINTR | WSAEACCES |
WSAEBADF
WSAEBADF относится к BSD-совместимой терминологии ошибок, сохранённой Winsock ради совместимости исходного кода. В переносимом коде ближайшим смысловым предшественником является EBADF: операция получила дескриптор или handle, недопустимый для неё. Microsoft также отмечает, что некоторые значения, определённые в Winsock2.h , не возвращаются ни одной функцией Winsock, поэтому точный источник важнее одного символьного имени.
Не путайте его с неверным сокетом
Нативные вызовы Winsock обычно используют более конкретные значения, такие как WSAENOTSOCK , когда аргумент-сокет не является сокетом, или WSA_INVALID_HANDLE для недопустимого объекта события. Если WSAEBADF появляется в сетевом журнале Windows, определите, пришёл ли он из слоя переносимости, стороннего поставщика или кода, преобразующего результаты в стиле errno.
Полезная диагностика
- Запишите точный API, завершившийся ошибкой, и немедленно получите ошибку через
WSAGetLastError. - Запишите владение дескриптором, историю close/shutdown и передачу между потоками.
- Проверьте, сопоставляет ли оболочка совместимости POSIX-дескрипторы с дескрипторами Winsock.
Microsoft: коды ошибок Winsock · Microsoft: errno и WSAGetLastError · POSIX: errno.h
Нужно найти другой код? Найти другой код состояния или ошибки.