Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W Windows Vista i nowszych wersjach Windows ujednolicony model właściwości urządzenia zawiera właściwość stanu urządzenia i właściwość kodu problemu. Ujednolicony model właściwości urządzenia używa kluczy właściwości do reprezentowania tych właściwości.
Windows Server 2003, Windows XP i Windows 2000 nie obsługują kluczy właściwości ujednoliconego modelu właściwości ani nie obsługują odpowiednich wartości wpisu rejestru reprezentujących te właściwości. Odpowiednie informacje można jednak pobrać, wywołując funkcję CM_Get_DevNode_Status . Aby zachować zgodność z wcześniejszymi wersjami Windows, Windows Vista i nowsze wersje obsługują również CM_Get_DevNode_Status. Należy jednak użyć kluczy właściwości ujednoliconego modelu właściwości urządzenia, aby uzyskać dostęp do właściwości urządzenia.
Ponadto w Windows 8 i nowszych wersjach Windows występuje również właściwość stanu problemu. Ta właściwość zawiera wartość NTSTATUS , która może zawierać dodatkowe informacje dotyczące kodu problemu ustawionego na urządzeniu. Jeśli wartość stanu problemu jest równa STATUS_SUCCESS, żadne dodatkowe informacje dotyczące kodu problemu nie były dostępne w momencie ustawienia tego kodu na urządzeniu.
Aby uzyskać informacje na temat używania kluczy właściwości do uzyskiwania dostępu do właściwości wystąpienia urządzenia w systemie Windows Vista i nowszych wersjach, zobacz Uzyskiwanie dostępu do właściwości wystąpienia urządzenia (Windows Vista i nowsze wersje).
Aby uzyskać dostęp do stanu i kodu problemu dla wystąpienia urządzenia w Windows Server 2003, Windows XP i Windows 2000, wywołaj CM_Get_DevNode_Status i podaj następujące parametry:
Ustaw pulStatus tak, aby wskazywał na wartość typu ULONG, która odbiera flagi bitów stanu ustawione dla wystąpienia urządzenia. Wartość stanu może być dowolną kombinacją flag bitowych z prefiksem "DN_", które są zdefiniowane w cfg.h.
Ustaw parametr pulProblemNumber tak, aby wskazywał na wartość typu ULONG, która odbiera numer problemu ustawiony dla wystąpienia urządzenia. Numer problemu jest jedną z stałych z prefiksem "CM_PROB_", które są zdefiniowane w cfg.h. CM_Get_DevNode_Status ustawia numer problemu tylko wtedy, gdy w pulStatus ustawiono DN_HAS_PROBLEM.
Ustaw dnDevInst na uchwyt instancji urządzenia, dla którego ma zostać pobrany stan i kod problemu.
Ustaw wartość ulFlags na zero.
Jeśli wywołanie CM_Get_DevNode_Status powiedzie się, CM_Get_DevNode_Status pobiera żądany stan i kod problemu dla wystąpienia urządzenia i zwraca CR_SUCCESS. Jeśli wywołanie funkcji nie powiedzie się, CM_Get_DevNode_Status zwraca jeden z kodów błędów z prefiksem "CR_", które są zdefiniowane w cfgmgr32.h.
Jak znaleźć kod i stan problemu urządzenia za pomocą Menedżera urządzeń
Jeśli wystąpi problem z urządzeniem, Menedżer urządzeń nałoży na ikonę urządzenia w widoku drzewa żółty trójkąt z wykrzyknikiem. Po kliknięciu prawym przyciskiem myszy urządzenia i wybraniu pozycji Właściwości zostanie wyświetlone okno dialogowe zawierające więcej informacji o urządzeniu. Kod problemu zostanie wyświetlony na karcie Ogólne w polu Stan urządzenia .
Właściwość Stan problemu pojawia się na liście rozwijanej Właściwość na karcie Szczegóły urządzenia w Menedżer urządzeń.
Używanie debugera do znajdowania kodu problemu i stanu problemu dla urządzenia
Aby wyświetlić wszystkie urządzenia, które mają kod problemu w debugerze jądra, użyj rozszerzenia !devnode 0 21 . To również pokazuje parametr ProblemStatus na urządzeniu. Przykład:
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
Możesz również wyświetlić kod problemu i stan problemu, wydając !devnode na adresie 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