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