다음을 통해 공유


디바이스 인스턴스에 대한 상태 및 문제 코드 검색

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에서 디바이스 instance 대한 상태 및 문제 코드에 액세스하려면 CM_Get_DevNode_Status 호출하고 다음 매개 변수를 제공합니다.

  • pulStatus를 디바이스 instance 대해 설정된 상태 비트 플래그를 수신하는 ULONG 형식 값에 대한 포인터로 설정합니다. 상태 값은 Cfg.h에 정의된 접두사 "DN_"이 있는 비트 플래그의 조합일 수 있습니다.

  • pulProblemNumber를 디바이스 instance 대해 설정된 문제 번호를 수신하는 ULONG 형식 값에 대한 포인터로 설정합니다. 문제 번호는 Cfg.h에 정의된 접두사 "CM_PROB_"가 있는 상수 중 하나입니다. CM_Get_DevNode_StatuspulStatus에서 DN_HAS_PROBLEM 설정된 경우에만 문제 번호를 설정합니다.

  • dnDevInst를 상태 및 문제 코드를 검색할 디바이스에 대한 디바이스 instance 핸들로 설정합니다.

  • ulFlags를 0으로 설정합니다.

CM_Get_DevNode_Status 호출이 성공하면 CM_Get_DevNode_Status 디바이스 instance 대해 요청된 상태 및 문제 코드를 검색하고 CR_SUCCESS 반환합니다. 함수 호출이 실패하면 CM_Get_DevNode_StatusCfgmgr32.h에 정의된 접두사 "CR_"가 있는 오류 코드 중 하나를 반환합니다.

장치 관리자 사용하여 디바이스에 대한 문제 코드 및 문제 상태 찾기

디바이스에 문제가 있는 경우 장치 관리자 트리 뷰의 디바이스 아이콘을 느낌표가 있는 노란색 삼각형으로 오버레이합니다. 디바이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택하면 디바이스에 대한 자세한 정보가 포함된 대화 상자가 표시됩니다. 문제 코드는 디바이스 상태 필드의 일반 탭에 표시됩니다.

문제 상태 속성은 장치 관리자 디바이스의 세부 정보 탭에 있는 속성 드롭다운에 나타납니다.

디버거를 사용하여 디바이스에 대한 문제 코드 및 문제 상태 찾기

커널 디버거에 문제 코드가 있는 모든 디바이스를 보려면 !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

DEVICE_NODE 주소에서 !devnode를 실행하여 문제 코드 및 문제 상태 볼 수도 있습니다.

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

참고 항목