| Предыдущий | Следующий |
| NAP_E_ID_NOT_FOUND | NAP_E_SERVICE_NOT_RUNNING |
NAP_E_MAXSIZE_TOO_SMALL
Соединение не может передать пакет SoH требуемого размера
NAP_E_MAXSIZE_TOO_SMALL — это HRESULT 0x8027000B (знаковое десятичное значение -2144927733, беззнаковое десятичное значение 2150039563). AllStat, используя winerror.h, описывает его как «Максимальный размер соединения слишком мал для пакета SoH». Значение имеет признак ошибки, facility 0x27 и поле кода 0x000B.
Это результат устаревшей платформы Network Access Protection. Microsoft указывает, что NAP недоступна начиная с Windows 10, а современные выпуски Windows Server не содержат прежние роли NAP, HRA и HCAP. Код следует применять к поддерживаемым устаревшим системам, архивной телеметрии, компонентам совместимости и миграции.
Ёмкость транспорта меньше требуемого объёма данных о состоянии
Клиент принудительного применения задаёт для соединения ProtocolMaxSize, и обмен NAP должен укладываться в это ограничение транспорта. NAP_E_MAXSIZE_TOO_SMALL означает, что доступного максимума недостаточно для требуемого пакета Statement of Health. Это ошибка согласования ёмкости, а не признак повреждения полей SoH или несоответствия конечной точки политике.
Почему доступного размера недостаточно
- Транспорт принудительного применения объявляет очень малый предел полезной нагрузки или дважды вычитает размер заголовков.
- Слишком много SHA добавляют крупные заявления в один обмен, и их совокупный размер превышает бюджет соединения.
- Пользовательский атрибут состояния содержит подробный текст, сертификаты или диагностические данные, которым не место в компактном SoH.
- Вызывающая сторона задаёт
ProtocolMaxSizeв неверных единицах или обрезает значение более узким целочисленным типом. - Изменившаяся сетевая инкапсуляция добавляет накладные расходы, но клиент продолжает использовать прежний максимум.
Учёт размера
- Запишите
ProtocolMaxSize, размер сериализованного SoH, накладные расходы транспорта, число атрибутов и закодированную длину каждого из них. - Зафиксируйте, какой клиент принудительного применения задал максимум и менялось ли значение между поколениями соединения.
- Сравните тот же набор данных состояния через другой транспорт принудительного применения, чтобы отделить рост пакета от ограничения транспорта.
- Записывайте логические размеры до сериализации и окончательный размер в передаваемом виде, чтобы были видны расходы на выравнивание и обрамление.
Изменение правильной величины
- Проверьте, что
SetMaxSizeполучает размер в байтах и полную беззнаковую структуру, ожидаемую API. - Удалите из пользовательских атрибутов SoH повторяющиеся или не относящиеся к политике данные, не отбрасывая обязательные поля идентификации и ошибок.
- Перед увеличением значения установите реальный максимум протокола принудительного применения: объявление размера больше возможностей транспорта приведёт к последующему обрезанию.
- Повторите проверку с точным сериализованным пакетом и убедитесь, что он помещается после всей инкапсуляции.
Отличие от соседних результатов NAP
NAP_E_INVALID_PACKET означает недействительную структуру, тогда как этот код может возвращаться для полностью корректного, но слишком большого пакета. Нельзя использовать NAP_E_MISSING_SOH как запасной результат после молчаливого удаления слишком крупных данных. Ошибка фрагментации транспорта может возникнуть позже и не должна называться этой ошибкой ёмкости NAP без подтверждения места вызова.
Повтор и восстановление
Повтор с неизменным максимумом и тем же размером пакета снова завершится ошибкой. Для восстановления нужен поддерживаемый транспортом больший бюджет, меньший соответствующий стандарту SoH или меньше необязательных атрибутов. Нельзя обрезать сериализованный пакет по пределу байтов: это превратит ясную ошибку ёмкости в недействительное или вводящее в заблуждение сообщение о состоянии.
Практический пример
Пользовательский SHA добавляет в SoH диагностическую цепочку сертификатов, из-за чего совокупный пакет превышает ProtocolMaxSize VPN-клиента принудительного применения. NAP возвращает NAP_E_MAXSIZE_TOO_SMALL. Перенос цепочки в отдельный диагностический канал и сохранение в SoH только компактного кода результата восстанавливают обмен.
Ссылки
- Microsoft: константы ошибок NAP
- Microsoft: SetMaxSize
- Microsoft: интерфейс соединения принудительного применения
- Microsoft: проверка SoH
Нужно найти другой код? Найти другой код состояния или ошибки.