Что означает код HRESULT 0xC00D1518 (NS_E_DATAPATH_NO_SINK)?

 
Предыдущий Следующий
NS_E_PLAYLIST_END_RECEDING NS_E_INVALID_PUSH_TEMPLATE

NS_E_DATAPATH_NO_SINK

Серверное значение NS_E_DATAPATH_NO_SINK

Что проверяет сервер

Этот результат (0xC00D1518) отмечает условие: в построенном пути данных нет объекта записи, способного принимать его пакеты. Видимым симптомом может быть прерванное воспроизведение, но этот HRESULT формируется на административной границе или границе распространения данных.

Серверный путь распространения соединяет источник данных, анализатор, заголовок мультимедиа и один или несколько приёмников данных. Когда возвращается этот результат, публикация методом push добавляет управляющий путь от кодировщика к серверу, а доставка клиенту использует отдельный протокол и состояние соединения. В трассировке он исследуйте вход и выход независимо: выбор источника, разбор и создание заголовка, а также выбор приёмника являются отдельными контрольными точками. Решающий вопрос состоит в том, соответствуют ли текущий объект и значения этой границе; базовое описание AllStat само по себе не показывает поколение объекта, выбранный подключаемый модуль или сбой нижнего уровня.

Контролируемое исправление

  1. Зафиксируйте 0xC00D1518, этот результат, точное действие API или администратора и время первого сбоя.
  2. Сохраните источник данных, анализатор, объект пути данных, коллекции приёмников широковещательной и одноадресной передачи и их состояния включения.
  3. Убедитесь, что объект по-прежнему принадлежит текущему поколению WMServer, точки публикации или представления.
  4. Выполните один изолированный эксперимент: включите или подключите правильный объект записи данных и перестройте путь данных до запуска доставки.
  5. Повторите исходную операцию этот результат через тот же протокол и под той же учётной записью службы; не подменяйте её другим тестом на стороне клиента.
  6. после него подтвердите ожидаемое следующее состояние и сохраните любой последующий HRESULT как отдельный результат конвейера.

В автоматических тестах проверяйте как HRESULT, так и итоговое состояние точки публикации, списка воспроизведения, подключаемого модуля или архива.

Характер сбоя для этого кода

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

Полезный отрицательный контроль — включить или подключить правильный объект записи данных и перестроить путь данных до запуска доставки. Если это изменение позволяет тому же вызову он пройти дальше, результат подтверждает эту границу. Если он сохраняется, вернитесь к первому событию нижнего уровня, а не расширяйте область исправления.

Соблазнительное, но неверное действие — изменить учётные данные источника: пакетам по-прежнему некуда поступать. Такой тест не проверяет важное здесь различие: отсутствие подключаемого модуля источника является ошибкой выбора на входной стороне. Это различие также объясняет, почему мониторинг должен сохранять символьное имя, а не только общую ошибку COM.

Данные, отделяющие этот код

ДанныеПочему они важны для него
Решающее состояниеисточник данных, анализатор, объект пути данных, коллекции приёмников широковещательной и одноадресной передачи и их состояния включения.
Ответственный объектЗапишите сервер, точку публикации, список воспроизведения, узел пространства имён, подключаемый модуль или элемент кэша, вернувший он, включая время его создания или перезапуска.
Первый результат нижнего уровняСохраните самое раннее событие Win32, сокета, COM, анализатора или подключаемого модуля до HRESULT; последующие оболочки могут сопоставить несколько причин с ним.
Контролируемое сравнениеИспользуйте заведомо исправный объект того же типа и изменяйте только предусловие «в построенном пути данных нет объекта записи, способного принимать его пакеты».
Конфиденциальные данныеПо возможности записывайте идентификаторы, длины, хэши и обезличенные URL; не публикуйте пароли, файлы авторизации или неограниченные клиентские данные.

Результаты проверки

Наблюдение при повторной проверкеИнтерпретация
Тот же вызов по-прежнему возвращает онОтклонённое предусловие не изменилось либо вызывающий код по-прежнему использует старое поколение объекта или конфигурации.
Операция проходит дальше и появляется более поздний кодЭта граница устранена. после него диагностируйте новый код на его собственной стадии источника, анализатора, приёмника, сети или клиента.
Новый объект работает, а сохранённый — нетЧастью инцидента является время жизни объекта или устаревший контекст; исправьте обработку жизненного цикла вместо изменений всей системы.
Сбой возникает только для одной точки публикации, списка, ключа кэша или подключаемого модуляДанные указывают на конфигурацию или содержимое конкретного объекта, а не на отказ всего сервера.

Изменения, не устанавливающие причину

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

Сравнение с соседними состояниями

Главное различие: отсутствие подключаемого модуля источника является ошибкой выбора на входной стороне.

Близкий результатДругая контрольная точка
NS_E_INVALID_PUSH_TEMPLATEСравните его собственную символьную границу и первый сбойный вызов; его нельзя автоматически объединять с ним.
NS_E_PUSH_DUPLICATE_PUBLISHING_POINT_NAMEПо отношению к нему этот соседний результат относится к другому состоянию или ветви проверки, даже если видимый пользователю симптом похож.
NS_E_INVALID_PUSH_PUBLISHING_POINTИспользуйте тип объекта и последовательность операций, чтобы определить, какой результат является определяющим.

Технические источники

Закрывайте инцидент только после устранения он на текущем объекте.


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