| Предыдущий | Следующий |
| WSA_QOS_EFLOWSPEC | WSA_QOS_EFILTERSTYLE |
WSA_QOS_EPROVSPECBUF
Длина ProviderSpecific и границы объектов должны описывать одну и ту же последовательность байтов
WSA_QOS_EPROVSPECBUF означает, что специфичная для поставщика часть структуры Winsock QOS недопустима целиком. Поле имеет тип WSABUF, поэтому важны и указатель, и число байтов; обычно указанные байты содержат цепочку объектов RSVP или управления трафиком, начинающуюся с QOS_OBJECT_HDR.
Убедитесь, что буфер остаётся действительным на протяжении всего вызова, его длина не включает постороннюю память в конце и каждый объект полностью помещается до объявленной границы. Нулевой указатель при ненулевой длине, усечённый заголовок, отсутствующий маркер конца или сериализация, зависящая от архитектуры, могут сделать последовательность нечитаемой. Сначала проверьте пустой буфер ProviderSpecific с корректными стандартными FLOWSPEC, затем добавляйте объекты по одному, чтобы определить первое повреждённое добавление.
Проверки на уровне буфера
- Время жизни указателя WSABUF и длина.
- Выравнивание первого объекта и наличие полного заголовка.
- Сумма всех значений ObjectLength.
- Маркер конца списка и отсутствие посторонних данных после него.
Ссылки
- Microsoft: поле ProviderSpecific структуры QOS
- Microsoft: последовательность объектов, специфичных для поставщика
- Microsoft: общий формат объекта QoS
Нужно найти другой код? Найти другой код состояния или ошибки.