Код экземпляра устройства


Получение кода состояния и проблемы для экземпляра устройства - Windows drivers

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

В Windows Vista и более поздних версиях Windows модель унифицированных свойств устройства включает свойство состояния устройства и свойство кода проблемы. Модель унифицированных свойств устройства использует ключи свойств для представления этих свойств.

Windows Server 2003, Windows XP и Windows 2000 не поддерживают ключи свойств модели унифицированных свойств и не поддерживают соответствующие значения записей реестра, представляющие эти свойства. Однако соответствующие сведения можно получить, вызвав функцию CM_Get_DevNode_Status . Для обеспечения совместимости с более ранними версиями Windows Windows Vista и более поздних версий также поддерживаются CM_Get_DevNode_Status. Однако для доступа к свойствам устройства следует использовать ключи свойств унифицированной модели свойств устройства.

Кроме того, в Windows 8 и более поздних версиях Windows также имеется свойство состояния проблемы. Это свойство содержит значение NTSTATUS , которое может содержать дополнительные сведения, относящиеся к коду проблемы, заданному на устройстве. Если значение состояния проблемы STATUS_SUCCESS, то при установке кода проблемы на устройстве не было доступно никаких дополнительных сведений, относящихся к коду проблемы.

Сведения об использовании ключей свойств для доступа к свойствам драйвера устройства в Windows Vista и более поздних версиях см. в разделе "Доступ к свойствам экземпляра устройства" (Windows Vista и более поздних версий).

Чтобы получить доступ к коду состояния и проблемы для экземпляра устройства на Windows Server 2003, Windows XP и Windows 2000, вызовите CM_Get_DevNode_Status и укажите следующие параметры:

  • Задайте для параметра pulStatus указатель на значение типа ULONG, которое получает флаги бита состояния, заданные для экземпляра устройства. Значение состояния может быть любым сочетанием битовых флагов с префиксом "DN_", определенным в Cfg.h.

  • Задайте для параметра pulProblemNumber указатель на типизированное значение ULONG, которое получает номер проблемы, заданный для экземпляра устройства. Номер проблемы является одной из констант с префиксом "CM_PROB_", определенным в Cfg.h. CM_Get_DevNode_Status задает номер проблемы, только если DN_HAS_PROBLEM задан в pulStatus.

  • Присвойте dnDevInst дескриптор экземпляра устройства устройству, для которого необходимо получить код состояния и проблемы.

  • Задайте ulFlags равным нулю.

Если вызов CM_Get_DevNode_Status выполнен успешно, CM_Get_DevNode_Status получает запрошенное состояние и код проблемы для экземпляра устройства и возвращает CR_SUCCESS. Если вызов функции завершается сбоем, CM_Get_DevNode_Status возвращает один из кодов ошибок с префиксом "CR_", определенным в Cfgmgr32.h.

При возникновении проблемы с устройством диспетчер устройств наложит значок устройства в виде дерева желтым треугольником с восклицательным знаком. Щелкнув устройство правой кнопкой мыши и выбрав "Свойства", появится диалоговое окно с дополнительными сведениями об устройстве. Код проблемы отображается на вкладке "Общие " в поле состояния устройства .

Свойство состояния проблемы отображается в раскрывающемся списке "Свойство" на вкладке "Сведения" для устройства в диспетчер устройств.

Чтобы просмотреть все устройства с кодом проблемы в отладчике ядра, используйте расширение !devnode 0 21 . Здесь также показано значение ProblemStatus на устройстве. Пример:

0: kd> !devnode 0 21 Dumping IopRootDeviceNode (= 0x85d37e30) DevNode 0x8ad6ab78 for PDO 0x81635c30 InstancePath is "ROOT\DIINSTALLDRIVER\0003" ServiceName is "isolated" State = DeviceNodeRemoved (0x312) Previous State = DeviceNodeInitialized (0x302) Problem = CM_PROB_FAILED_ADD Problem Status = 0xc00000bb 

Вы также можете просмотреть код проблемы и состояние проблемы, выдав !devnode на адресе DEVICE_NODE:

0: kd> !devnode 0x8ad6ab78 DevNode 0x8ad6ab78 for PDO 0x81635c30 Parent 0x85d37e30 Sibling 0x8adee670 Child 0000000000 ... Problem = CM_PROB_FAILED_ADD Problem Status = 0xc00000bb 

См. также

  • DEVPKEY_Device_DevNodeStatus
  • DEVPKEY_Device_ProblemCode
  • DEVPKEY_Device_ProblemStatus

Способы выявления и нахождения драйвера для неизвестного устройства

Февраль 12th, 2014 Данил

Установка и обслуживание драйверов,всегда было головной болью для многих пользователей Windows всё время,будь то в Windows 95 или Windows Vista. Особенно при переходе с Vista или XP на Windows 7, можно встретить различные проблемы,касающиеся идентификации устройства и драйверов.Это стало распространённой жалобой на то, что Windows не может определить устройство,установленное на компьютер или подключаемое к нему,и Windows не удаётся найти правильный или неправильный драйвер для устройства.

Диспетчер устройств будет отображать неизвестное устройство,как неизвестное устройство с желтым вопросительным знаком.Посмотрите на изображение ниже для экземпляра.

В случае каких-то неопределенных, неизвестных или не установленных драйверов устройств,пользователь может вручную загрузить их из Интернета или использовать диск с драйверами для установки драйвера.Однако,перед установкой соответствующего драйвера,пользователю необходимо идентифицировать и понять, что это за неизвестное устройство.Вот несколько способов, чтобы найти драйвер неизвестного устройства в Windows.

1.Вручную определить неизвестное устройство

Это возможно, самый тяжелый способ идентификации устройства. Во-первых, мы должны выяснить код экземпляра устройства , который состоит из Vendor ID и Идентификатор устройства. Чтобы найти код экземпляра устройства перейдите в Диспетчер Устройств-> правой кнопкой мыши щёлкните на неизвестное устройство -> Свойства -> Подробности.

Теперь, из выпадающего меню выберите путь к Экземпляру Устройства (Windows 7)/ код Экземпляра Устройства (Windows XP)

Это даст вам строковое значение, которое содержит идентификатор vendor ID и Device ID. Строка такая:

PCIVEN_1180&DEV_0592И SUBSYS_02BE1028&REV_124&31FC8C23&0&0BF0

где VEN_1180-vendor ID и DEV_0592 является идентификатор Устройства. Запишите их оба.

Теперь, перейдите к PCI База данных на сайте http://www. pcidatabase.com/,централизованная база данных поддерживаемых PCI-Идентификаторов устройств.

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

В случае, если вы не можете найти информацию на PCI базе данных, вы можете попробовать альтернативные веб-сайты — http://www.pcisig.com/membership/vid_search/ или http://pciids.sourceforge.net/

2. Unknown Device identifier-идентификатор программного обеспечения

Unknown Device Identifier позволяет вам определять жёлтый вопросительный знак с надписью Неизвестное устройство в Диспетчере Устройств. И сообщает, что вам подробное резюме об имени производителя,OEM имя,тип устройства,модель и даже точное имя неизвестного устройства. Собранной информацией, вы можете обратиться к производителю оборудования для поддержки или ищите в Интернете соответствующий драйвер с помощью простого щелчка. С помощью этой утилиты, вы, возможно, сразу конвертируете ваши неизвестные устройства на определенных известных устройствах и найдёте нужный драйвер в Интернете и свяжетесь с производителем устройства или аппаратного обеспечения.Известные устройства распознаются Microsoft Windows и будут также анализироваться независимо от операционной системы.

— Определить устройства USB 1.1/2.0/3.0
— Идентифицировать устройства IEEE 1394
— Определить устройства ISA Plug&Play
— Идентификация устройств на шине AGP/PCIe
— Определить устройства PCI, PCI-E, eSATA
— Многоязычный интерфейс: русский,английский, французский
— Поиск драйверов для устройств
— Обратиться к оборудованию непосредственно Вендер
— Сохранить или распечатать информацию об оборудовании

3.Утилита Unknown Devices

Утилита Unknown Devices помогает пользователям найти то,что  в диспетчере устройств описано как неизвестное устройство,и какое оно есть на самом деле. Проверив Device Manager для неизвестных устройств и извлечения из него информации, программа пытается выяснить,какое это устройство,так что пользователям не придется открывать корпус ПК или искать случайные числа off карт PCI, чтобы выяснить её модель.

Утилита Unknown Devices поддерживает Windows XP, Windows 2003 (но не Windows NT), бета-версиет поддерживает,возможно, Windows 7.Утилита Unknown Devices портативная и не требует установки, поэтому она прекрасно работает с компакт-диска или флешки. Утилита Unknown Devices доступна для бесплатного скачивания.

[share-locker locker_id=»de80732ce9da1c941″ theme=»blue» message=»Если Вам понравилась эта статья,нажмите на одну из кнопок ниже.СПАСИБО!» facebook=»true» likeurl=»CURRENT» vk=»true» vkurl=»CURRENT» google=»true» googleurl=»CURRENT» tweet=»true» tweettext=»» tweeturl=»CURRENT» follow=»true» linkedin=»true» linkedinurl=»CURRENT» ][/share-locker]

  • Автор: Данил