Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В 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