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