Программирование в сетях Windows. Э. Джонс, Д. Оланд
Скачать 2.88 Mb.
|
Прерванный вызов функции. Блокирующий вызов прерывается вы- зовом WSACancelBlockingCall 10009-WSAEBADF Неверный дескриптор файла. В ОС Microsoft Windows СЕ такую ошиб- ку может возвратить функция socket, она означает, что общий последователь- ный порт занят 10013-WSAEACCES Доступ запрещен. Была сделана попытка обращения к запрещенному сокету Обычно эта ошибка возникает при попытке использовать широко- вещательный адрес в функциях sendto или WSASendTo, когда широковещание не разрешено параметрами setsockopt и SOJ3ROADCAST 10014-WSAEFAULT Недопустимый адрес. Функции Winsock передан недопустимый указа- тель адреса Ошибка также возникает, когда указан слишком маленький буфер 10022-WSAE1NVAL Недопустимый параметр. Указано недопустимое значение параметра, например, контрольного кода в функции WSAIoctl Эта же ошибка может воз- никнуть из-за текущего состояния сокета, например, при вызове функций accept или WSAAccept на сокете, не находящемся в состоянии прослушивания W024-WSAEMFILE Открыто слишком много файлов. Открыто слишком много сокетов Обычно системы доступа Microsoft ограничены только количеством доступ- ных ресурсов ОС 1003 5 - WSAEWOULDBLOCK Ресурс временно не доступен. Ошибка наиболее часто возвращается неблокирующими сокетами, на которых запрошенную операцию (напри- мер, вызов функции connect) нельзя выполнить немедленно 10036-WSAEINPROGRESS Операция выполняется. Блокирующая операция находится в процес- се выполнения Ошибка появляется редко, только при разработке 16-битнох приложений Winsock Приложение С Коды ошибок Winsock 569 10057-WSAEALREADY Действие уже выполняется. На неблокирующем сокете происходит попытка выполнить операцию, которая уже вызвана и выполняется напри- мер, при повторном вызове на неблокирующем сокете функции connect или WSAConnect во время установления соединения Ошибка также возникает, когда поставщик службы находится в процессе выполнения функции обрат- ного вызова (для функций, поддерживающих обратный вызов) 10058-WSAENOTSOCK Операция на недопустимом сокете. Ошибка может быть возвращена любой функцией Winsock параметром которой является дескриптор типа SOCKET Означает, что задан неверный дескриптор сокета WO59-WSAEDESTADDRREQ Требуется адрес назначения. Ошибка появляется, если пропущен адрес например, при вызове функции sendto с адресом назначения INADDR_ANY 10040-WSAEMSGSIZE Слишком длинное сообщение. Сообщение отправляется на дейтаг- раммный соке г размером больше внутреннего буфера Ошибка также воз- никает, если сообщение больше, чем позволяют ограничения сети Еще одна причина появления данной ошибки — буфер слишком мал, чтобы вместить полученную дейтаграмму 10041-WSAEPROTOTYPE Неверный тип протокола для сокета. При вызове socket или WSASocket указан протокол, не поддерживающий семантику данного типа сокета Напри- мер, попытка создать IP-сокет типа SOCKSTREAM с протоколом IPPROTOUDP W042-WSAENOPROTOOPT Неверный параметр протокола. Неизвестный, не поддерживаемый или неверный параметр сокета Ошибка также возникает, если уровень ука зан при вызове getsockopt или setsockopt 10045-WSAEPROTONOSUPPORT Не поддерживаемый протокол. Запрошенный протокол не установ- лен в системе Например, попытка создать TCP- или UDP-сокет, при том, что в системе не установлен протокол TCP/IP 10044-WSAESOCKTNOSUPPORT Не поддерживаемый тип сокета. Данное семейство адресов не под держивает указанный тип сокета Например, запрос сокета типа SOCK RAVi по протоколу, не поддерживающему простые сокеты 10045-WSAEOPNOTSUPP Не поддерживаемая операция. Объект обращения не поддерживает запрошенную операцию Обычно возникает при попытке вызвать функции Winsock на сокете, не поддерживающем данную операцию Например, ассер или WSAAccept на дейтаграммном сокете 10046-WSAEPFNOSUPPORT Не поддерживаемое семейство протоколов. Запрошенное семействе протоколов не существует или не установлено в системе В большинстве слу чаев ошибка означает то же, что и более частая — WSAEAFNOSUPPORT 5 7 0 Приложение С Коды ошибок Winsock 1 0 0 4 7 - WSAEAFNOSUPPORT Семейство адресов не поддерживает запрошенную операцию. Попытка выполнить операцию, не поддерживаемую данным типом сокета: например, при вызове sendto или WSASendTo на сокете типа SOCKJSTREAM. Ошибка также возникает при вызове socket или WSASocket с указанием невер- ной комбинации семейства адресов, типа сокета и протокола. W048-WSAEADDRINUSE Адрес уже используется. При обычных обстоятельствах только один сокет может использовать каждый адрес сокета. Например, адрес 1Р-сокета состоит из локального IP-адреса и номера порта. Ошибка обычно связана с функциями bind, connect и WSAConnect. Для функции setsockopt может быть задан параметр SO_REUSEADDR, разрешающий использование несколькими сокетами одного и того же локального IP-адреса и порта (см. главу 9)- 10049-WSAEADDRNOTAVAIL Невозможно назначить запрошенный адрес. При вызове API указан недопустимый для данной функции адрес: например, в функции bind задан IP- адрес, не относящийся к локальному IP-интерфейсу. Также ошибка может воз- никнуть при указании порта 0 удаленной машины, с которой производится соединение, в функциях connect, WSAConnect, sendto, WSASendTo, и WSAJoinLeaf. 10050-WSAENETDOWN Сеть не работает. Операция не может быть выполнена из-за неполадок в сети, стеке, сетевом интерфейсе или с локальной сети. 10051-WSAENETUNREACH Сеть недоступна. Попытка произвести операцию в недоступной сети: локальный узел не знает, как достичь удаленный. Другими словами, не суще- ствует известного маршрута к месту назначения. 1OO52-WSAENETRESET Сеть разорвала соединение при сбросе. Соединение было разорва-, но из-за невозможности доставки сообщений о его продолжении. Ошибка также возникает при попытке задать параметр SO_KEEPALIVE в функции setsockopt, когда соединение уже разорвано. 100 5 Ъ-WSAECONNABORTED Преждевременный разрыв соединения из-за ошибки ПО. Про- изошла ошибка протокола или истек таймаут. 10054- WSAECONNRESET Соединение разорвано партнером по связи. Установленное соеди- нения было принудительно закрыто удаленным узлом. Ошибка возникает, если удаленный процесс не работоспособен (например, при ошибке обра- щения к памяти или сбое аппаратуры) или если на сокете было произведе- но принудительно закрытие. Сокет можно настроить для резкого закрытия с помощью параметра SOJJNGER и функции setsockopt (см. главу 9)- 1005 5- WSAENOBUFS Свободное место в буфере закончилось. Запрошенная операция не может быть произведена, так как системе не хватает свободного места в бу- фере. Приложение С Коды ошибок Wmsock 57' 1 0 0 5 6 - W S A E I S C O N N С сокетом уже установлено соединение. Попытка установить соеди нение с сокетом, который уже используется. Ошибка может произойти ка: на дейтаграммных, так и на потоковых сокетах. При использовании дейтаг раммного сокета ошибка возникает при вызове sendto или WSASendTo, eon для установления дейтаграммного соединения вызывались функции соппес или WSAConnect. 10057-WSAENOTCONN Нет соединения с сокетом. Производится запрос на отправление ил! получение данных на сокете, соединение с которым в данный момент н установлено. 10058-WSAESHUTDOWN Отправление невозможно после отключения сокета. Сокет уж< частично закрыт вызовом функции shutdown, но к нему делается запрос на отправление или получение данных. Ошибка возникает только на отключен! ных направлениях потока данных-, например, при попытке отправить дан| ные после вызова shutdoivn. 10060-WSAETIMEDOUT Время ожидания операции истекло. Сделан запрос на соединение но удаленный компьютер не отвечает должным образом (или вообще н отвечает) по истечении определенного промежутка времени. Ошибка обыч но возникает, когда заданы параметры сокета SO_SNDTIMEO и SORCVTIMEC или при вызове функций connect и WSAConnect (см. главу 9)- 10061-WSAECONNREFUSED В соединении отказано. Компьютер-адресат отказывает в установлю нии соединения, обычно из-за того, что на удаленной машине нет приложе ния, обслуживающего соединение с указанным адресом. 10064-WSAEHOSTDOWN Узел не работает. Попытка выполнить операцию не удалась, так как узе^ назначения выключен. Тем не менее, приложение, скорее всего, получи' ошибку WSAETIMEDOUT, обычную при попытке установить соединение. 1006 5-WSAEHOSTUNREACH Не известен путь к узлу. Был произведен запрос на выполнение one рации на недоступном узле. Эта ошибка похожа на WSAENETUNREACH. 10067-WSAEPROCUM С л и ш к о м много процессов. Некоторые поставщики служб WinsocJ задают предел количества процессов, которые могут обращаться к ним o/i новременно. 10091 - WSASYSNOTREADY Подсистема сети не доступна. Ошибка возвращается при обращений к WSAStartup, когда поставщик службы не может отработать из-за того, чт<| базовая система, предоставляющая услуги, не доступна. 10092-WSAVERNOTSUPPORTED Некорректная версия Winsock.dll. Запрошенная версия поставщик| службы Winsock не поддерживается. 5 7 2 Приложение С Коды ошибок Winsock 10095-WSANOTINIT1ALJSED Winsock не инициализирован. Вызов WSAStartup не удался. 10101 - WSAEDISCON Идет корректное завершение работы. Ошибка возвращается функ- циями WSARecv и WSARecvFrom, указывая, что удаленный партнер находится в процессе корректного завершения работы Возникает при использовании протоколов, ориентированных на передачу сообщений, таких, как ATM. 10102-WSAENOMORE Более з а п и с е й не найдено. Ошибка возвращается функцией WSALoo- kupServiceNext и означает, что больше нет дополнительных записей. Она аналогична ошибке WSA_E_NO_MORE. Приложения должны проверять воз- врат обеих этих ошибок. 10W3-WSAECANCELLED Операция отменена. Ошибку возвращает WSALookupServiceNext, если во время отработки этой функции был вызов WSALookupServiceEnd. Аналогич- на WSA_E_CANCELLED. Приложения должны проверять возврат обеих оши- бок. 10104-WSAEINVALIDPROCTABLE Неверная таблица вызовов процедуры. Ошибка обычно возвраща- ется поставщиком службы, если в таблице процедур содержатся недопусти- мые записи (см. главу 14). 10105 -WSAEINVAUDPROVIDER Недопустимый поставщик службы. Поставщик не может установить корректную версию Winsock, необходимую для правильного функциониро- вания. 101Q6-WSAEPROVIDERFAILEDINIT Поставщик службы не инициализирован. Поставщик не может за- грузить требуемые библиотеки (DLL). 10107'-WSASYSCALLFAILURE Сбой системного вызова. Неблагоприятный исход системного вызо- ва, который не должен давать сбой. 10108-WSASERV1CE_NOT_FOUND Не н а й д е н о такой службы. Запрошенная служба не найдена в данном пространстве имен. Ошибка обычно возникает при работе функций регис- трации и разрешения имен при запросе служб (см. главу 10). 10109-WSA7YPE_NOT_FOUND Не найден тип класса. Ошибка также относится к функциям регистрации и разрешения имен. Когда регистрируется экземпляр службы, то он должен ссы- латься на класс службы, заданный ранее функцией WSAInsta/lServiceClass. 10110-WSA_E_NO_MORE Записей более не найдено. Ошибка возвращается функцией WSALoo- kupServiceNext и аналогична WSAENOMORE. Приложения должны проверять возврат обеих этих ошибок. Приложение С Коды ошибок Winsock 573 ^ 1 0 1 1 1 -WSA_E_CANCELLED 4 Операция отменена. Ошибку возвращает WSALookupServiceNext, если во время отработки этой функции был вызов WSALookupServiceEnd. Аналогич- на WSAECANCELLED. Приложения должны проверять возврат обеих этих ошибок. 10112 - WSAEREFUSED Запрос отклонен. Запрос к базе данных не удался. 11001-WSAHOSTNOTJFOUND Узел не найден. Ошибку возвращают gethostbyname и gethostbyaddr, ука зывая, что полномочный узел не найд^ 1 \002-WSATRY_AGAlN Неполномочный узел не найден. Не был найден неполномочныЛ узел, либо произошла ошибка в работе сервера. Ошибка связана с gethost byname и gethostbyaddr. \1005-WSANO_RECOVERY Произошла неустранимая ошибка. Ошибка связана с gethostbyname и gethostbyaddr. Следует попытаться выполнить операцию еще раз. 11004-WSANOJDATA Не найдено записей данных запрошенного типа. Не найдено запи сей данных запрошенного типа, хотя заданное имя было верным. Ошибка связана с gethostbyname и gethostbyaddr. 1100 5 - WSA_QOS RECEIVERS Получено минимум одно сообщение резервирования. Минимум один процесс в сети хочет получать трафик Quality of Service (QoS). Значение связано с реализацией QoS в IP и, по сути, ошибкой не является (см. главу 12.). 1 \006-WSA_QOS_SENDERS Получено минимум одно сообщение пути. Минимум один процесс в сети хочет отправлять трафик QoS. Значение является сообщением о со- стоянии. 11007 -WSA_QOS_NO_SENDERS Нет отправителей QoS. Более не существует процессов, которые хоте- ли бы отправлять данные QoS (см. главу 12). 1 W08-WSA_QOS_NO_RECEIVERS Нет получателей QoS. Более не существует процессов, которые хотели бы получать данные QoS (см. главу 12). 1 \0Q9-WSA_QOS_REQUEST_CONFIRMED Запрос на резервирование подтвержден. Утвердительный ответ на запрос о резервировании пропускной способности, который могут выдавать приложения QoS (см. главу 12). 11010-WSA_QOS_ADMISSION_FAILURE Ошибка из-за недостаточности ресурсов. Не хватило ресурсов для удовлетворения запроса на пропускную способность QoS. 5 7 4 Приложение С Коды ошибок Wmsock 1 1 0 1 1 -WSA_QOS POLICYJAILURE Неверные реквизиты. Пользователь не владеет необходимыми полно- мочиями, или заданные реквизиты не позволяют выполнить запрос резер- вирования QoS. 11012-WSA_QOS_BAD_STYLE Неизвестный или противоречивый стиль. Приложения QoS могут задавать разные стили фильтрования для данного сеанса (см. главу 12). 11013 - WSA_QOS_BAD_OBJECT Неверная структура FILTERSPEC или специфичный для поставщи- ка объект. Ошибка в структуре FILTERSPEC или специфичных для постав- щика буферах объекта QoS (см. главу 12). 1 \Q\A-WSA_QOS_TRAFFIC_CTRL_ERROR Проблемы с FLOWSPEC. У компонента управления трафиком появилась проблема с параметрами FLOWSPEC, переданными в составе объекта QoS. 11015-WSA_QOS_GENERIC_ERROR Общая ошибка QoS. Универсальная ошибка, возвращаемая, когда не применимы другие ошибки QoS. 6-WSA_INVALID_HANDLE Указан неверный объект события. Функции WSAWaitForMultipleEvents передан неверный описатель. Ошибка Win32, появляется при использовании функций Winsock, соответствующих функциям Win32. 8-WSA_NOT_ENOUGH_MEMORY Не достаточно памяти. Для выполнения операции не хватает свобод- ной памяти, ошибка Win32. 87-WSAJNVAI1D_PARAMETER Один или несколько неверных параметров. Функции передан не- верный параметр, ошибка Win32. Также возникает при работе WSAWaitFor- MultipleEvents, когда задан неверный параметр счетчика событий. 2 5 8 - WSA_WAIT_TIMEOUT Таймаут операции истек. Перекрытая операция не завершилась в по- ложенное время, ошибка Win32. 995-WSA_OPERATION_ABORTED Перекрытая операция прервана. Перекрытая операция ввода-выво- да отменена из-за закрытия сокета, ошибка Win32. Также возникает при вы- полнении команды SIOFLUSH. 996-WSAJOJNCOMPLETE Объект события для перекрытого ввода-вывода не свободен. При вызове WSAGetOverlappedResults перекрытая операция ввода-вывода не завер- шена, ошибка Win32. 997-WSA_IO_PENDING Перекрытая операция завершится позже. При перекрытом вызове ввода-вывода операция отложена и завершится позже, ошибка Win32 (см. главу 8). \ От авторов Мы хотим поблагодарить всех, кто внес свой вклад в создание этой книги. Особой благодарности заслуживает Вей Хуа (Wei Hua), разработавший все примеры Visual Basic для прилагаемого компакт-диска. Вей также консульти- ровал нас по поводу портов завершения ввода-вывода и поставщиков транс- портных служб в протоколе интерфейса поставщика служб (SPI) Winsock 2. Спасибо Берри Баттеркли (Barry Butterklee) за пояснения по вопросам, ка- сающимся портов завершения ввода-вывода. Берри также проверил главу < QoS и много сделал, чтобы информация в ней была правильной и точной Амол Дешпенд (Amol Deshpande) предоставил ценную информацию об описателях устанавливаемой файловой системы (IFS) многоуровневых по- ставщиков служб Winsock 2. Он также помог нам как эксперт по отладке программ при разработке примера пакета данных, описывающих состояние сети (link-state packet, LSP). Фрэнк Ли (Frank Li) предоставил подлинный пример регистрации и раз- решения имен (RNR), который послужил основой главы 10. Фрэнк также разработал некоторые примеры IP Helper, вошедшие в состав прилагаемого к книге компакт-диска. Арвинд Мерчинг (Arvind Murching) и Аншуль Дхир (Anshul Dhir) прояс нили многие вопросы, касающиеся поставщика ATM для Winsock. Алекс Чоу (Alex Choe), разбирающийся практически во всех современных сетевых протоколах, помог нам с описанием деталей функционированш протокола IPX/SPX, вошедшим в главу о семействе адресов Winsock. Кен Эванс (Ken Evans) описал и объяснил многие структуры данных ДЛ5 интерфейса прикладного программмирования IP Helper, определение кото рых приведено в Приложении В. Фрэнк Ким (Frank Kim) и Дэвид Моуэрс (David Mowers) помогли расска зать о системе безопасности Windows NT, которая используется перенапра вителем Windows, почтовыми ящиками и именованными каналами. Мэтт Ниблер (Matt Nibler) выверил технические сведения о перенапра вителе Windows, которому посвящена глава 2. Гэри Юкиш (Gary Yukish) оказал помощь в пояснении возможностей сер вера удаленного доступа. Сахин Кукрейа (Sachin Kukreja) ответил на многие вопросы о QoS. И наконец, Мазахир «Маази» Пунавала (Mazahir "Maaaazy" Poonawala) npe доставил пример RAS для компакт-диска. Мы также благодарны группе по работе с документацией Microsoft Platforn SDK за их великодушное и активное участие. Хотим выразить признатель ность Ребекке Маккей (Rebecca McKay) и Донни Камерон (Donnie Cameron из Microsoft Press. Редактирование Ребекки сделало книгу доступной для чи тателя. Донни занималась выверкой точности технической информации прекрасно справилась с этим нелегким делом. |