| Предыдущий | Следующий |
| NS_E_CURL_CANTWALK | NS_E_CURLHELPER_NOTADIRECTORY |
NS_E_CURL_INVALIDPORT
NS_E_CURL_INVALIDPORT: данные, граница и повторная проверка
Практический смысл NS_E_CURL_INVALIDPORT (0xC00D132C) состоит не «сбой мультимедиа», а часть authority содержит недопустимый номер порта или порт вне диапазона. Это помещает сбой в контрольную точку URL invalidport и сужает набор данных, которые следует собрать до изменения состояния следующей попыткой.
До открытия сокета проигрыватель разбирает URL на схему, authority, узел, порт, путь и экранированные данные до закрытия инцидента invalidport. Он также может объединять относительную ссылку с базовым URL или преобразовывать файловый URL в путь; для каждой операции действуют свои правила допустимости в диагностической записи invalidport. В случае NS_E_CURL_INVALIDPORT сохраните самый ранний результат нижнего уровня, поскольку оболочки могут сопоставить несколько разных причин одному HRESULT при выделении случая invalidport.
Сохранение исходного и разобранного URL
| Что зафиксировать | Как это помогает выделить NS_E_CURL_INVALIDPORT |
|---|---|
| Ответственный вызов | Запишите метод API, идентичность объекта, поток или обратный вызов и метку времени для проверки URL invalidport. |
| Решающие значения | исходная неизменённая строка, число символов, кодировка, базовый URL при его наличии, разобранные схема, узел, порт и путь, а также требуемая и предоставленная длины выходного буфера при трассировке пути invalidport. |
| Поколение объекта | Отметьте, когда были созданы объект чтения, записи, граф, объект URL, сеанс потоковой передачи или поставщик метаданных; устаревшее состояние может повторно вызывать NS_E_CURL_INVALIDPORT после изменения конфигурации. |
| Первый вложенный результат | Сохраните самый ранний статус кодека, COM, сокета, DNS, анализатора или поставщика до NS_E_CURL_INVALIDPORT; более поздние сообщения интерфейса менее конкретны. |
| Случай для сравнения | Используйте один заведомо исправный ресурс, проходящий ту же проверку URL invalidport, и измените только отклонённое предусловие. |
Анатомия сбоя
Проверка URL invalidport достигается, когда часть authority содержит недопустимый номер порта или порт вне диапазона. После NS_E_CURL_INVALIDPORT вызывающий код не должен предполагать, что существует следующий фильтр, пакет, сеанс или состояние метаданных.
В качестве отрицательного контроля удалите явно заданный порт, чтобы использовать порт схемы по умолчанию, затем повторите проверку с одним десятичным портом допустимого диапазона как отрицательный контроль в контрольной точке invalidport. Более поздний HRESULT означает, что эта контрольная точка пройдена, а новый результат относится к другой стадии при трассировке пути invalidport.
Близкие результаты не взаимозаменяемы
Главное различие: Синтаксис порта отклоняется до установления TCP-соединения или возникновения тайм-аута прокси при контролируемой повторной проверке invalidport.
| Близкий HRESULT | Как его сравнивать |
|---|---|
NS_E_CURL_INVALIDURL | Сравните ответственный API и первое отклонённое значение; это соседняя контрольная точка, а не обязательно та же причина, что и у NS_E_CURL_INVALIDPORT. |
NS_E_CURL_CANTWALK | По состоянию объекта и порядку операций определите, какой код является определяющим, если оба появляются в одной трассировке до закрытия инцидента invalidport. |
NS_E_CURLHELPER_NOTADIRECTORY | Сохраните этот результат отдельно, если он появляется только после устранения условия NS_E_CURL_INVALIDPORT. |
Эксперимент с одним компонентом URL
- Запишите
0xC00D132C,NS_E_CURL_INVALIDPORT, точную операцию и время первого сбоя при выделении случая invalidport. - Сохраните исходную неизменённую строку, число символов, кодировку, базовый URL при его наличии, разобранные схему, узел, порт и путь, а также требуемую и предоставленную длины выходного буфера в контрольной точке invalidport.
- Не используйте повторно граф, сеанс, объект чтения или объект метаданных, созданный до изменения соответствующей конфигурации или ресурса при трассировке пути invalidport.
- Выполните один изолированный тест: удалите явно заданный порт, чтобы использовать порт схемы по умолчанию, затем повторите проверку с одним десятичным портом допустимого диапазона при контролируемой повторной проверке invalidport.
- Повторите действие через тот же API и тот же протокольный путь; другой проигрыватель или локальная копия полезны только для сравнения, но не доказывают исправление проверки URL invalidport.
- Подтвердите ожидаемое следующее состояние и сохраните любой новый HRESULT как отдельный последующий результат до закрытия инцидента invalidport.
Что доказывает результат анализатора
| Результат повторной проверки | Толкование для NS_E_CURL_INVALIDPORT |
|---|---|
| Тот же вызов по-прежнему возвращает код | Значения, управляющие проверкой URL invalidport, не изменились либо вызывающий код по-прежнему использует старое поколение объекта. |
| Новый объект работает успешно | Время жизни или кэшированное состояние способствовало появлению NS_E_CURL_INVALIDPORT; исправьте повторное создание объекта вместо применения обходного решения ко всей системе при выделении случая invalidport. |
| Вызов доходит до другого HRESULT | Граница проверки URL invalidport пройдена. Диагностируйте новый код на его собственной стадии формата, графа, URL, сети или метаданных при трассировке пути invalidport. |
| Ошибка возникает только для одного ресурса | Данные указывают на состояние конкретного содержимого, URL, точки публикации, потока, атрибута или объекта, а не на общий отказ при контролируемой повторной проверке invalidport. |
Действия, вводящие в заблуждение
- слепое декодирование и повторное кодирование всего URL может изменить зарезервированные разделители и идентичность ресурса при сборе данных о invalidport.
- Не стирайте данные о первом появлении
NS_E_CURL_INVALIDPORTмногократными повторными попытками; обратные вызовы и повторные соединения могут заменить полезное состояние более поздней обобщающей ошибкой до закрытия инцидента invalidport. - Не публикуйте учётные данные, материалы защищённого содержимого или полные частные URL в диагностической записи invalidport. Записывайте обезличенные идентификаторы, длины, хэши и поля протокола, необходимые для воспроизведения проверки URL invalidport.
Технические источники
- RFC 3986: общий синтаксис URI
- Обработка URL с помощью WinINet
- CreateUri
- ParseURL
- Реестр HRESULT Microsoft
Считайте NS_E_CURL_INVALIDPORT устранённым только тогда, когда тот же путь API проходит эту контрольную точку; успех в другом проигрывателе или с кэшированной копией является лишь дополнительным подтверждением в контрольной точке invalidport.
Нужно найти другой код? Найти другой код состояния или ошибки.