Что означает код HRESULT 0xC00D000C (NS_E_NOFUNNEL)?

 
Предыдущий Следующий
NS_E_NOREGISTEREDWALKER NS_E_NO_LOCALPLAY

NS_E_NOFUNNEL

Диагностика NS_E_NOFUNNEL

NS_E_NOFUNNEL указывает на конкретную границу устаревшего серверного тракта Windows Media Services/NetShow: соединение для передачи данных не установлено. Для NS_E_NOFUNNEL, рассматривайте код как результат компонента, которому принадлежит эта граница, а не как доказательство отказа всех частей streaming, storage или network.

Где возвращается результат

Windows Media Services разделяет разрешение имён, выбор транспорта, управляющее соединение, доставку данных и media session при проверке «соединение для передачи данных не установлено». Поэтому HTTP, RTSP и старые пути MMS могут завершаться ошибкой на разных этапах даже для одного publishing point на границе «соединение для передачи данных не установлено».

Контролируемая последовательность диагностики

Чтобы проверить NS_E_NOFUNNEL, сначала воспроизведите исходный вызов с тем же объектом сервера и тем же содержимым. Затем для NS_E_NOFUNNEL, повторите ту же операцию, исправив только состояние, указанное HRESULT. Наконец для NS_E_NOFUNNELсоздайте новый запрос или сеанс и убедитесь, что обработка проходит границу NS_E_NOFUNNEL границы, а не просто возвращает другую ошибку более раннего этапа.

Что зафиксировать до повторной попытки

Зафиксируйте URL клиента и выбранный protocol, разрешённый адрес сервера, локальный и удалённый endpoint, plug-in управляющего протокола, результат socket, маршрут proxy, поколение соединения и timestamp первого packet или timeout в сценарии «соединение для передачи данных не установлено». Для NS_E_NOFUNNELсохраните первый результат Win32, socket, storage, parser или plug-in, появившийся до NS_E_NOFUNNEL; этот HRESULT часто является итоговым результатом на стороне сервера.

Интерпретация наблюдений

НаблюдениеЗначение
Та же операция возвращает NS_E_NOFUNNEL при том же идентификаторе объектаСбой воспроизводится на границе «соединение для передачи данных не установлено»; исследуйте её владельца до широких изменений системы.
Сначала зарегистрирована ошибка нижнего уровняДля NS_E_NOFUNNEL, используйте этот более ранний результат как основной диагностический сигнал. NS_E_NOFUNNEL может лишь сопоставить его с пространством результатов Windows Media.
Новый сеанс проходит эту проверку, но завершается ошибкой позжеИсходное условие NS_E_NOFUNNEL условие было устранено. Диагностируйте более поздний код как отдельный этап pipeline для условия «соединение для передачи данных не установлено».
Сбой относится только к другому клиенту или материалуДля NS_E_NOFUNNEL, сравните конфигурацию конкретного объекта, metadata содержимого и ограничения; это аргумент против исправления всего сервера.

Контрольный список проверки

  1. Зафиксируйте 0xC00D000C, NS_E_NOFUNNEL, точную операцию API или административное действие и время первого появления результата.
  2. Сохраните URL клиента и выбранный protocol, разрешённый адрес сервера, локальный и удалённый endpoint, plug-in управляющего протокола, результат socket, маршрут proxy, поколение соединения и timestamp первого packet или timeout при проверке «соединение для передачи данных не установлено».
  3. Для NS_E_NOFUNNEL, проверьте текущее состояние до его изменения; stateful handles и sessions сервера могут устаревать после reconnect, restart, rebuild или замены media.
  4. Для NS_E_NOFUNNEL, примените одно контролируемое исправление: измените только состояние, относящееся к границе «соединение для передачи данных не установлено».
  5. Повторите NS_E_NOFUNNEL с новым поколением операции и проверьте как return code, так и ожидаемое поведение stream, file, disk, title или session.

Карта данных для этого кода

АспектЧто проверить
ОбъектДля соединение для передачи данных не установлено — признак NS_E_NOFUNNEL, зафиксируйте выбранный server-side object и проверьте, соответствует ли его идентичность handle вызывающей стороны. Это отделяет условие «соединение для передачи данных не установлено» от общей ошибки другого уровня.
СостояниеДля соединение для передачи данных не установлено — признак NS_E_NOFUNNEL, зафиксируйте состояние lifecycle непосредственно перед отказавшим запросом и ожидаемый следующий переход. Это отделяет условие «соединение для передачи данных не установлено» от общей ошибки другого уровня.
ВходДля соединение для передачи данных не установлено — признак NS_E_NOFUNNEL, зафиксируйте точный path, address, index, title, stream, device или значение конфигурации, переданное владельцу. Это отделяет условие «соединение для передачи данных не установлено» от общей ошибки другого уровня.
Ресурс или пределДля соединение для передачи данных не установлено — признак NS_E_NOFUNNEL, зафиксируйте активные sessions, открытые файлы, bitrate, bandwidth, disk space или другое ограничение этой операции. Это отделяет условие «соединение для передачи данных не установлено» от общей ошибки другого уровня.
Нижний уровеньДля соединение для передачи данных не установлено — признак NS_E_NOFUNNEL, зафиксируйте первый результат socket, filesystem, parser, device, registry или component, зарегистрированный до HRESULT. Это отделяет условие «соединение для передачи данных не установлено» от общей ошибки другого уровня.
ПоколениеДля соединение для передачи данных не установлено — признак NS_E_NOFUNNEL, зафиксируйте, сделал ли reconnect, restart службы, rebuild диска или пересоздание объекта исходный handle устаревшим. Это отделяет условие «соединение для передачи данных не установлено» от общей ошибки другого уровня.

Краткая диагностическая формулировка нет funnel используется на этой странице только для удобства диагностики; программными идентификаторами остаются NS_E_NOFUNNEL и HRESULT 0xC00D000C.

Технические ссылки

После исправления сохраните исходный код в записи инцидента: он указывает точную изменившуюся контрольную точку и не позволяет принять последующий downstream HRESULT за тот же сбой при проверке «соединение для передачи данных не установлено».


Нужно найти другой код? Найти другой код состояния или ошибки.