| Предыдущий | Следующий |
| NS_E_PLAYLIST_PLUGIN_NOT_FOUND | NS_E_MEDIA_PARSER_INVALID_FORMAT |
NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED
NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED: ответственный объект, данные и восстановление
Механизм и область действия
NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED (0xC00D1580) отмечает условие: выбранный источник данных может открывать содержимое, но не реализует перечисление каталогов или контейнеров. Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED код указывает на узкий серверный контракт, поэтому при диагностике следует сохранить поколение объекта и первый собственный результат.
Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED Windows Media Services выбирает подключаемые модули по классу, регистрации, состоянию включения и заявленному формату или протоколу. При возврате NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED сервер может успешно загрузить один класс модуля, но не найти источник данных, анализатор или механизм сценариев, необходимый конкретному запросу. В трассировке NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED записывайте CLSID выбранного подключаемого модуля, класс, тип загрузки, состояние включения и пользовательское событие ошибки. При диагностике NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED обнаружение и выполнение подключаемого модуля завершаются сбоем по-разному. Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED решающий вопрос состоит в том, соответствуют ли текущий объект и значения этой границе; базовое описание AllStat само по себе не показывает поколение объекта, выбранный модуль или сбой нижнего уровня.
Интерпретация второго результата
| Наблюдение при повторной проверке | Интерпретация |
|---|---|
Тот же вызов по-прежнему возвращает NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED | Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED отклонённое предусловие не изменилось либо вызывающий код по-прежнему использует старое поколение объекта или конфигурации. |
| Операция проходит дальше и появляется более поздний код | Граница NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED устранена. После NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED диагностируйте новый код на его собственной стадии источника, анализатора, приёмника, сети или клиента. |
| Новый объект работает, а сохранённый — нет | Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED частью инцидента является время жизни объекта или устаревший контекст; исправьте обработку жизненного цикла вместо изменений всей системы. |
| Сбой возникает только для одной точки публикации, списка, ключа кэша или подключаемого модуля | Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED данные указывают на конфигурацию или содержимое конкретного объекта, а не на отказ всего сервера. |
Характер сбоя для этого кода
В типичном инциденте NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED сервер достигает состояния, в котором выбранный источник данных может открывать содержимое, но не реализует перечисление каталогов или контейнеров, и отклоняет операцию до того, как вызывающий код может безопасно предполагать выполнение следующей стадии. Поэтому запись инцидента должна связывать идентичность подключаемого модуля источника данных, префикс URL, запрошенный метод перечисления и тип объекта источника с поколением объекта и точным административным или протокольным запросом.
Полезный отрицательный контроль — запросить конкретный путь объекта либо использовать источник данных, явно поддерживающий перечисление. Если это изменение позволяет тому же вызову NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED пройти дальше, результат подтверждает эту границу. Если NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED сохраняется, вернитесь к первому событию нижнего уровня, а не расширяйте область исправления.
Соблазнительное, но неверное действие — считать, что любой источник, похожий на URL, может выступать каталогом. Такой тест не проверяет важное здесь различие: отсутствие подключаемого модуля источника означает, что источник вообще не выбран; здесь источник существует, но не обладает одной необязательной возможностью. Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED это различие также объясняет, почему мониторинг должен сохранять символьное имя, а не только общую ошибку COM.
Создание воспроизводимой записи инцидента
| Данные | Почему они важны для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED |
|---|---|
| Решающее состояние | идентичность подключаемого модуля источника данных, префикс URL, запрошенный метод перечисления и тип объекта источника. |
| Ответственный объект | Запишите сервер, точку публикации, список воспроизведения, узел пространства имён, подключаемый модуль или элемент кэша, вернувший NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED, включая время его создания или перезапуска. |
| Первый результат нижнего уровня | Сохраните самое раннее событие Win32, сокета, COM, анализатора или подключаемого модуля до HRESULT; последующие оболочки могут сопоставить несколько причин с NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED. |
| Контролируемое сравнение | Используйте заведомо исправный объект того же типа и изменяйте только предусловие «выбранный источник данных может открывать содержимое, но не реализует перечисление каталогов или контейнеров». |
| Конфиденциальные данные | Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED по возможности записывайте идентификаторы, длины, хэши и обезличенные URL; не публикуйте пароли, файлы авторизации или неограниченные клиентские данные. |
Контролируемое исправление
- Зафиксируйте
0xC00D1580,NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED, точное действие API или администратора и время первого сбоя. - Сохраните идентичность подключаемого модуля источника данных, префикс URL, запрошенный метод перечисления и тип объекта источника.
- Для
NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTEDубедитесь, что объект по-прежнему принадлежит текущему поколению WMServer, точки публикации или представления. - Выполните один изолированный эксперимент: запросите конкретный путь объекта либо используйте источник данных, явно поддерживающий перечисление.
- Повторите исходную операцию
NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTEDчерез тот же протокол и под той же учётной записью службы; не подменяйте её другим тестом на стороне клиента. - После
NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTEDподтвердите ожидаемое следующее состояние и сохраните любой последующий HRESULT как отдельный результат конвейера.
Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED успех означает, что та же операция проходит эту контрольную точку и создаёт ожидаемое следующее состояние, а не только исчезновение символьного кода.
Сравнение с соседними состояниями
Главное различие: отсутствие подключаемого модуля источника означает, что источник вообще не выбран; здесь источник существует, но не обладает одной необязательной возможностью.
| Близкий результат | Другая контрольная точка |
|---|---|
NS_E_MEDIA_PARSER_INVALID_FORMAT | Сравните его собственную символьную границу и первый сбойный вызов; его нельзя автоматически объединять с NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED. |
NS_E_PLAYLIST_PLUGIN_NOT_FOUND | По отношению к NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED этот соседний результат относится к другому состоянию или ветви проверки, даже если видимый пользователю симптом похож. |
NS_E_SCRIPT_DEBUGGER_NOT_INSTALLED | Для NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED используйте тип объекта и последовательность операций, чтобы определить, какой результат является определяющим. |
Изменения, не устанавливающие причину
- предположение, что любой источник, похожий на URL, может выступать каталогом.
- Для
NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTEDполная переустановка особенно слабо подтверждает причину, поскольку меняет множество несвязанных компонентов, не объясняя отклонённое серверное предусловие. - Не подавляйте
NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTEDи не заменяйте её общей «ошибкой медиасервера»; сохраняйте символьный код и ответственную операцию в телеметрии.
Технические источники
- Классы подключаемых модулей Windows Media Services
- Использование внутренних событий для определения ошибок
- Системные подключаемые модули анализатора мультимедиа
- Реестр HRESULT Microsoft
Закрывайте инцидент только после устранения NS_E_DATA_SOURCE_ENUMERATION_NOT_SUPPORTED на текущем объекте.
Нужно найти другой код? Найти другой код состояния или ошибки.