| Предыдущий | Следующий |
| 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 означает, что эта контрольная точка пройдена и новый результат относится к другой стадии пути потоковой передачи.
Повторная проверка с сохранением протокола
- Во время контролируемой повторной проверки зафиксируйте
0xC00D2EF1,NS_E_CLOSED_ON_SUSPEND, точную операцию и время первого сбоя. - Сохраните исходный URL, выбранный протокол, режим прокси, разрешённые конечные точки, время подключения и ответа, состояние аутентификации, идентификатор сеанса и первый результат сокета или протокола.
- Не используйте повторно граф, сеанс, объект чтения или метаданных, созданный до соответствующего изменения конфигурации или ресурса.
- Выполните один изолированный тест: повторите тот же URL мультимедиа с одним протоколом и одной конечной точкой, отдельно записывая время DNS, подключения, ответа и сеанса.
- Повторите операцию через тот же API и тот же протокольный путь; другой проигрыватель или локальная копия полезны только для сравнения, но не доказывают устранение этой контрольной точки.
- Подтвердите ожидаемое следующее состояние и сохраните любой новый 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. Записывайте обезличенные идентификаторы, длины, хэши и поля протокола, необходимые для воспроизведения этой контрольной точки.
Технические источники
- Обзор протокола Windows Media HTTP Streaming
- Получение ответа WMSP
- Взаимодействие Windows Media с прокси
- Связи протоколов потоковой передачи Windows Media
- Реестр HRESULT Microsoft
Считайте NS_E_CLOSED_ON_SUSPEND устранённой только тогда, когда тот же путь API проходит эту контрольную точку; успех в другом проигрывателе или с кэшированной копией является лишь дополнительным подтверждением.
Нужно найти другой код? Найти другой код состояния или ошибки.