Что означает код ошибки Windows 10009 (WSAEBADF)?

 
Предыдущий Следующий
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


Нужно найти другой код? Найти другой код состояния или ошибки.