| Предыдущий | Следующий |
| WSA_E_NO_MORE | WSAEREFUSED |
WSA_E_CANCELLED
WSA_E_CANCELLED сообщает об отмене поиска в пространстве имён Winsock. Документированный случай — вызов WSALookupServiceEnd , пока выполняется другой вызов WSALookupServiceNext для того же поиска всё ещё выполняется.
Отмена изменяет владение результатом
Отменённый вызов Next не возвращает частичный результат, который приложение может безопасно исследовать. Microsoft указывает, что данные его буфера результата не определены. Рабочий поток должен перейти по пути отмены и отбросить содержимое буфера.
Правила параллельной работы, которые нужно определить явно
- Определите поток-владелец дескриптора поиска.
- Сериализуйте обычное завершение перечисления и внешнюю отмену.
- Сохраняйте дескриптор действительным, пока заблокированный или выполняющийся поиск не обработает отмену.
- Регистрируйте отмену как намеренное событие жизненного цикла, если её инициировало завершение приложения.
Для совместимости также обрабатывайте более старое значение WSAECANCELLED . Microsoft документирует оба значения и рекомендует проверять оба, поскольку поставщики пространства имён могут использовать любой из этих кодов. Для нового запроса требуется новый контекст WSALookupServiceBegin .
Microsoft: WSALookupServiceNext · Microsoft: WSALookupServiceEnd
Нужно найти другой код? Найти другой код состояния или ошибки.
