Что означает код HRESULT 0xC00D2EF1 (NS_E_CLOSED_ON_SUSPEND)?

 
Предыдущий Следующий
NS_E_PROXY_DNS_TIMEOUT NS_E_CANNOT_READ_PLAYLIST_FROM_MEDIASERVER

NS_E_CLOSED_ON_SUSPEND

NS_E_CLOSED_ON_SUSPEND в трассировке формата, графа или потоковой передачи

Для NS_E_CLOSED_ON_SUSPEND (0xC00D2EF1) решающей границей является намеренное закрытие мультимедийного сеанса при приостановке работы или завершении системы. Диагностируйте контрольную точку закрытия при приостановке непосредственно и не выводите причину только из видимого симптома воспроизведения.

В диагностической записи закрытия при приостановке запрос потоковой передачи Windows Media проходит разрешение имён, выбор прокси, согласование протокола, аутентификацию, создание сеанса и доставку пакетов. WMSP и связанные протоколы сохраняют состояние сеанса, поэтому одно лишь допустимое TCP-соединение не доказывает наличие пригодного мультимедийного сеанса при разборе этого случая. При NS_E_CLOSED_ON_SUSPEND сохраните самый ранний результат нижнего уровня, поскольку оболочки могут сопоставить несколько разных причин одному HRESULT в этой контрольной точке.

Соседние результаты не взаимозаменяемы

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

Соседний HRESULTКак его сравнивать
NS_E_SERVER_DNS_TIMEOUTСравните владеющий API и первое отклонённое значение; этот результат относится к соседней контрольной точке и не обязательно имеет ту же причину, что и NS_E_CLOSED_ON_SUSPEND.
NS_E_PROXY_DNS_TIMEOUTЕсли оба кода встречаются в одной трассировке, определите основной результат по состоянию объекта и порядку операций.
NS_E_CANNOT_READ_PLAYLIST_FROM_MEDIASERVERСохраните этот результат отдельно, если он появляется только после устранения условия NS_E_CLOSED_ON_SUSPEND.

Анатомия сбоя

Контрольная точка закрытия при приостановке достигается, когда мультимедийный сеанс намеренно закрывается во время приостановки работы или завершения системы. После NS_E_CLOSED_ON_SUSPEND вызывающий код не должен предполагать существование следующего состояния фильтра, пакета, сеанса или метаданных.

В качестве отрицательного контроля повторите тот же URL мультимедиа с одним протоколом и одной конечной точкой, отдельно записывая время DNS, подключения, ответа и сеанса. Более поздний HRESULT означает, что эта контрольная точка пройдена и новый результат относится к другой стадии пути потоковой передачи.

Повторная проверка с сохранением протокола

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

Сетевые и протокольные данные

Что зафиксироватьПочему это отделяет NS_E_CLOSED_ON_SUSPEND
Владеющий вызовЗапишите метод API, идентификатор объекта, поток или обратный вызов и временную метку контрольной точки закрытия при приостановке.
Решающие значенияисходный URL, выбранный протокол, режим прокси, разрешённые конечные точки, время подключения и ответа, состояние аутентификации, идентификатор сеанса и первый результат сокета или протокола
Поколение объектаУкажите, когда были созданы объект чтения или записи, граф, объект URL, потоковый сеанс или поставщик метаданных; устаревшее состояние может воспроизводить NS_E_CLOSED_ON_SUSPEND после изменения конфигурации.
Первый вложенный результатСохраните самый ранний статус кодека, COM, сокета, DNS, синтаксического анализатора или поставщика до NS_E_CLOSED_ON_SUSPEND; последующие сообщения интерфейса менее конкретны.
Случай для сравненияИспользуйте один заведомо исправный ресурс, проходящий ту же контрольную точку потоковой передачи, и измените только отклонённое предварительное условие.

Интерпретация следующего сетевого состояния

Результат повторной проверкиТолкование для NS_E_CLOSED_ON_SUSPEND
Идентичный вызов по-прежнему возвращает кодЗначения, управляющие контрольной точкой закрытия при приостановке, не изменились либо вызывающий код всё ещё использует объект предыдущего поколения.
Новый объект работает успешноНа NS_E_CLOSED_ON_SUSPEND повлияло время жизни объекта или кэшированное состояние; исправьте пересоздание объекта вместо применения общесистемного обходного решения.
Вызов переходит к другому HRESULTГраница закрытия при приостановке пройдена. Диагностируйте новый код на принадлежащей ему стадии формата, графа, URL, сети или метаданных.
Сбой возникает только с одним ресурсомДанные указывают на состояние конкретного содержимого, URL, точки публикации, потока, атрибута или объекта, а не на общий отказ.

Действия, вводящие в заблуждение

  • рассматривать каждый HRESULT потоковой передачи как общую потерю пакетов, не разделив стадии DNS, подключения, ответа и сеанса;
  • не стирайте первое появление NS_E_CLOSED_ON_SUSPEND многократными повторными попытками: обратные вызовы и переподключения могут заменить полезное состояние более поздней ошибкой оболочки;
  • не публикуйте учётные данные, материалы защищённого содержимого или полные частные URL. Записывайте обезличенные идентификаторы, длины, хэши и поля протокола, необходимые для воспроизведения этой контрольной точки.

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

Считайте NS_E_CLOSED_ON_SUSPEND устранённой только тогда, когда тот же путь API проходит эту контрольную точку; успех в другом проигрывателе или с кэшированной копией является лишь дополнительным подтверждением.


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