다음을 통해 공유


버그 검사 0xA0: INTERNAL_POWER_ERROR

INTERNAL_POWER_ERROR 버그 검사 값은 0x000000A0. 이 버그 검사 전원 정책 관리자가 심각한 오류가 발생했음을 나타냅니다.

Important

이 문서는 프로그래머를 위한 것입니다. 컴퓨터를 사용하는 동안 파란색 화면 오류 코드를 받은 고객인 경우 파란색 화면 오류 문제 해결을 참조하세요.

INTERNAL_POWER_ERROR 매개 변수

매개 변수 1은 위반 유형을 나타냅니다. 다른 매개 변수의 의미는 매개 변수 1의 값에 따라 달라집니다.

매개 변수 1입니다. 매개 변수 2 매개 변수 3 매개 변수 4 원인

0x1

1: 디바이스가 최대 참조 수를 초과했습니다.

2, 3 또는 4: 너무 많은 inrush 전원 IRP가 큐에 대기되었습니다.

5: 전원 IRP가 수동 수준 디바이스 개체로 전송되었습니다.

6: 시스템에서 필요한 전원 IRP를 할당하지 못했습니다.

매개 변수 2의 값이 1이면 허용되는 최대 참조 수입니다.

매개 변수 2의 값이 2, 3 또는 4이면 허용되는 보류 중인 IRP의 최대 수입니다.

매개 변수 2의 값이 6이면 대상 디바이스 개체입니다.

매개 변수 2의 값이 6이면 시스템(0x0) 또는 디바이스(0x1) 전원 IRP인지 여부를 나타냅니다.

전원 IRP(I/O 요청 패킷)를 처리하는 동안 오류가 발생했습니다.

0x2

예약됨

예약됨

예약됨

전원 이벤트를 처리하는 동안 내부 오류가 발생했습니다. 자세한 내용은 매개 변수 1이 0x2 경우 버그 검사 0xA0 디버깅을 참조하세요.

0x3

예상 검사sum

실제 검사sum

오류의 줄 번호

최대 절전 모드 컨텍스트 페이지의 검사sum이 예상 검사sum과 일치하지 않습니다.

0x4

예상 검사sum

실제 검사sum

오류의 줄 번호

최대 절전 모드 파일에 쓸 페이지의 검사sum이 예상 검사sum과 일치하지 않습니다.

0x5

예약됨

예약됨

예약됨

알 수 없는 종료 코드가 시스템 종료 처리기로 전송되었습니다.

0x7

예약됨

예약됨

예약됨

처리되지 않은 예외가 발생했습니다. 자세한 내용은 매개 변수 1이 0x7 같은 경우 버그 검사 0xA0 디버깅을 참조하세요.

0x8

이 매개 변수는 항상 0x100 설정됩니다.

디바이스 개체

POWER_CHANNEL_SUMMARY

시스템 전원 이벤트를 처리하는 동안 심각한 오류가 발생했습니다.

0x9

상태 코드

미러링 단계

예약됨

최대 절전 모드 파일을 준비하는 동안 심각한 오류가 발생했습니다.

0xA

0: 다시 검사 즉시 버그가 요청되었습니다.

1: 페이지를 표시할 수 없는 모든 디바이스가 전원이 켜진 후 다시 시작하는 동안 버그 검사 요청되었습니다.

2: 모든 디바이스가 전원이 켜진 후 다시 시작하는 동안 버그 검사 요청되었습니다.

예약됨

예약됨

디버깅을 위해 절전 모드를 해제할 때 버그 검사 요청되었습니다.

0xB

최대 절전 모드 파일의 크기입니다.

공간이 부족하기 전 최대 절전 모드 진행률

0: HIBERFILE_PROGRESS_FREE_MAP

1: HIBERFILE_PROGRESS_RESUME_CONTEXT

2: HIBERFILE_PROGRESS_PROCESSOR_STATE

3: HIBERFILE_PROGRESS_SECURE_RANGES

4: HIBERFILE_PROGRESS_MEMORY_RANGES

5: HIBERFILE_PROGRESS_TABLE_PAGES

6: HIBERFILE_PROGRESS_MEMORY_IMAGE

매개 변수 2가 4이면 다시 기본 메모리 범위의 크기입니다.

최대 절전 모드 파일이 너무 작습니다.

0xC

상태 코드

덤프 스택 컨텍스트

예약됨

덤프 스택을 초기화하지 못했습니다.

0xD

전환 중인 시스템 전원 상태입니다.

수면 검사 지점이 가장 최근에 도달했습니다.

POP_POWER_ACTION 구조체에 대한 포인터입니다.

시스템이 적시에 전원 전환을 완료하지 못했습니다.

0xF

전환 중인 시스템 전원 상태입니다.

수면 검사 지점이 가장 최근에 도달했습니다.

현재 요청을 처리하는 스레드에 대한 포인터입니다.

시스템이 적시에 전원 전환을 완료하지 못했습니다.

0xF0

전환 중인 시스템 전원 상태입니다.

수면 검사 지점이 가장 최근에 도달했습니다.

현재 요청을 처리하는 스레드에 대한 포인터입니다.

시스템이 적시에 전원 전환을 완료(일시 중단)하지 못했습니다.

0xF1

전환 중인 시스템 전원 상태입니다.

수면 검사 지점이 가장 최근에 도달했습니다.

현재 요청을 처리하는 스레드에 대한 포인터입니다.

시스템이 적시에 전원 전환을 완료(다시 시작)하지 못했습니다.

매개 변수 1입니다. 매개 변수 2 매개 변수 3 매개 변수 4 원인

0x101

예약됨

예외 포인터입니다.

예약됨

시스템 전원 이벤트를 처리하는 동안 처리되지 않은 예외가 발생했습니다. 자세한 내용은 매개 변수 1이 0x101 경우 버그 검사 0xA0 디버깅을 참조하세요.

0x102

예약됨

DUMP_INITIALIZATION_CONTEXT

POP_HIBER_CONTEXT

최대 절전 모드 작업 버퍼 크기가 페이지 정렬되지 않았습니다.

0x103

예약됨

POP_HIBER_CONTEXT

예약됨

최대 절전 모드 프로세스 중에 모든 작업 페이지를 고려하지 못했습니다.

0x104

예약됨

POP_HIBER_CONTEXT

예약됨

내부 메모리 구조가 잠겨 있는 동안 내부 최대 절전 모드 메모리를 매핑하려고 했습니다.

0x105

예약됨

POP_HIBER_CONTEXT

예약됨

내부 최대 절전 모드 메모리를 지원되지 않는 메모리 형식 플래그로 매핑하려고 했습니다.

0x106

예약됨

메모리 설명자 목록(MDL)

예약됨

페이징 정렬되지 않은 메모리를 설명하는 최대 절전 모드 프로세스 중에 메모리 설명자 목록이 만들어졌습니다.

0x107

예약됨

POP_HIBER_CONTEXT

PO_MEMORY_RANGE_ARRAY

내부 최대 절전 모드 데이터 구조에서 데이터 불일치가 발생했습니다.

0x108

예약됨

POP_HIBER_CONTEXT

예약됨

디스크 하위 시스템이 최대 절전 모드 파일의 일부를 제대로 작성하지 못했습니다.

0x109

예약됨

예상 검사sum

실제 검사sum

프로세서 상태 데이터의 검사sum이 예상 검사sum과 일치하지 않습니다.

0x10A

예약됨

POP_HIBER_CONTEXT

NTSTATUS 오류 코드

디스크 하위 시스템이 최대 절전 모드 파일의 일부를 제대로 읽거나 쓰지 못했습니다.

0x10B

예약됨

현재 최대 절전 모드 진행률

예약됨

PoSetHiberRange API를 사용하여 잘못된 시간에 최대 절전 모드의 부팅 단계에 대한 페이지를 표시하려고 했습니다.

0x10C

예약됨

API에 제공된 플래그

표시할 길이

잘못된 매개 변수를 사용하여 PoSetHiberRange API가 호출되었습니다.

0x10D

예약됨

POP_HIBER_CONTEXT

NTSTATUS 오류 코드

다시 시작할 데이터를 제공하는 동안 보안 커널 하위 시스템이 실패했습니다.

0x10E

예약됨

잘못된 검사sum

이전 디스크 읽기의 검사sum

디스크 하위 시스템은 최대 절전 모드 파일에서 읽는 동안 손상된 데이터를 반환했습니다.

0x10F

현재 시스템 절전 모드는 검사.

내부 오류의 유형입니다.

0: 페이징을 사용하지 않도록 설정되었지만 Po가 모든 프로세서에서 인터럽트를 사용하지 않도록 설정하기 전에 검사 지점이 작성되었습니다.

1: 0 이외의 CPU가 시스템 절전 모드의 인터럽트 사용 안 함 단계에서 검사포인트를 작성하려고 했습니다.

2: 시스템의 또 다른 코드 조각은 EFI 런타임 서비스를 실행하는 것입니다.

예약됨

시스템 절전 모드 진행률을 검사 동안 내부 오류가 발생했습니다.

0x110

예약됨

예약됨

예약됨

시스템에서 시스템 절전 모드 상태를 사용하지 않도록 설정하지 못했지만 데이터 무결성을 보장하려면 그렇게 해야 합니다.

0x111

예약됨

예약됨

예약됨

드라이버가 사용자가 있음을 나타내고 사용자가 호출 스택을 캡처하는 디버깅 옵션을 사용하도록 설정했습니다.

0x200

예약됨

DEVICE_OBJECT

DEVICE_OBJECT_POWER_EXTENSION

알 수 없는 디바이스 유형이 유휴 상태로 검사.

0x300

예약됨

DEVICE_OBJECT

IRP

알 수 없는 상태 배터리 전원 IRP에서 반환되었습니다.

0x301

예약됨

DEVICE_OBJECT

IRP

배터리가 알 수 없는 상태로 들어갔습니다.

0x400

예약됨

IO_STACK_LOCATION

DEVICE_OBJECT

디바이스가 최대 참조 개수를 초과했습니다.

0x401

예약됨

보류 중인 IRP 목록

DEVICE_OBJECT

너무 많은 inrush 전원 IRP가 큐에 대기되었습니다.

0x402

예약됨

보류 중인 IRP 목록

DEVICE_OBJECT

너무 많은 inrush 전원 IRP가 큐에 대기되었습니다.

0x403

예약됨

보류 중인 IRP 목록

DEVICE_OBJECT

너무 많은 inrush 전원 IRP가 큐에 대기되었습니다.

0x404

예약됨

IO_STACK_LOCATION

DEVICE_OBJECT

전원 IRP가 수동 수준 디바이스 개체로 전송되었습니다.

0x500

예약됨

IRP

DEVICE_OBJECT

열전 IRP에서 알 수 없는 상태 반환되었습니다.

매개 변수 1입니다. 매개 변수 2 매개 변수 3 매개 변수 4 원인

0x600

DEVICE_OBJECT PDO

예약됨

예약됨

드라이버가 Power Runtime Framework를 사용하여 중복 등록을 시도했습니다.

0x601

POP_FX_DEVICE 디바이스

PEP_DEVICE_REGISTER PEP

예약됨

전원 엔진 플러그 인이 디바이스 등록을 수락하지 않았습니다.

0x602

DEVICE_NODE 디바이스 노드

절전 모드 수

예약됨

디바이스 노드 절전 모드 수가 활성화 수와 일치하지 않습니다.

0x603

POP_FX_PLUGIN

작업 요청 유형

예약됨

전원 엔진 플러그 인이 잘못된 작업 요청을 했습니다.

0x605

알림 ID

POP_FX_PLUGIN

예약됨

전원 엔진 플러그 인이 필수 디바이스 전원 관리 알림을 수락하지 못했습니다.

0x606

POP_FX_COMPONENT

POP_FX_COMPONENT_FLAGS

구성 요소에 대한 새 조건

전원 엔진 플러그 인은 리소스가 이미 활성(또는 유휴 상태)일 때 중요한 시스템 리소스 구성 요소를 활성(또는 유휴) 상태로 전환하려고 했습니다.

0x607

POP_FX_DEVICE

NTSTATUS

예약됨

성공해야 할 때 런타임 전원 관리 프레임워크 디바이스 제거 잠금을 획득하지 못했습니다.

0x608

POP_FX_COMPONENT

POP_FX_COMPONENT_FLAGS

예약됨

드라이버가 이전 활성 요청 없이 구성 요소를 유휴 상태로 전환하려고 했습니다.

0x609

POP_FX_PLUGIN

POP_FX_DEVICE

중복 요청 유형

0: DevicePowerRequired

1: DevicePowerNotRequired

전원 엔진 플러그 인은 디바이스 전원이 필요하거나 반대 유형의 중간 요청 없이는 디바이스 전원이 필요하지 않은 것을 요청했습니다.

0x610

POP_FX_PLUGIN

POP_FX_DEVICE

예약됨

이전 디바이스 전원 필요 요청이 미해결 상태인 동안 전원 엔진 플러그 인은 디바이스 전원이 필요하지 않다고 요청했습니다.

0x611

POP_FX_PLUGIN

POP_FX_DEVICE

잘못된 구성 요소 인덱스

전원 엔진 플러그 인이 잘못된 구성 요소에 대한 작업을 요청했습니다.

0x612

POP_FX_PLUGIN PowerEnginePlugin

예약됨

예약됨

Power Engine 플러그 인은 요청에 대해 PO에서 제공된 버퍼가 없는 디바이스 알림의 컨텍스트에서 추가 작업을 수행하도록 요청했습니다.

0x613

POP_FX_DEVICE

구성 요소 인덱스

연산

0: 전체 디바이스 전원이 필요하지 않음

1: 전원이 켜진 보고서 디바이스

2: 유휴 상태 완료

보류 중인 미해결 요청이 없는 경우 드라이버가 요청을 완료하려고 했습니다.

0x614

POP_FX_DEVICE

구성 요소 인덱스

잘못된 매개 변수

0: IRQL >= DISPATCH_LEVEL 사용되는 PO_FX_FLAG_BLOCKING

1: 지정된 PO_FX_FLAG_BLOCKING 및 PO_FX_FLAG_ASYNC_ONLY 모두

2: 잘못된 구성 요소 인덱스

드라이버가 잘못된 매개 변수가 있는 구성 요소에 대한 활성/유휴 전환을 요청했습니다.

0x615

POP_FX_PLUGIN

POP_FX_COMPONENT

불법 조치

0: 유휴 상태가 아닌 구성 요소 0

1:구성 요소가 이미 활성화되어 있습니다.

2: 미해결 활성화 요청 없음

3: 미해결 유휴 상태 전환

전원 엔진 플러그 인이 구성 요소 정품 인증 완료를 잘못 표시했습니다.

0x616

POP_FX_PLUGIN

POP_FX_COMPONENT

불법 조치

0: 잘못된 유휴 상태

1: 구성 요소가 이미 요청된 상태입니다.

2: 유휴 상태 0을 통과하지 않고 0이 아닌 유휴 상태를 요청했습니다.

전원 엔진 플러그 인이 구성 요소 유휴 상태 전환을 잘못 요청했습니다.

0x617

POP_FX_PLUGIN PowerEnginePlugin

UNICODE_STRING DeviceId

PEP 등록 PEP_DEVICE_REGISTER

전원 엔진 플러그 인이 디바이스 등록 알림을 처리할 때 잘못된 승인 유형을 반환했습니다.

0x618

POP_FX_WORK_ORDER_WATCHDOG_INFO WorkOrder

예약됨

예약됨

런타임 전원 작업자 스레드가 너무 오랫동안 차단되었습니다.

0x619

POP_FX_DEVICE 디바이스

구성 요소 인덱스

실제로 책임 있는 자식 디바이스의 NULL 또는 DEVICE_NODE

디바이스가 너무 오랫동안 가장 깊은 런타임 유휴 상태의 진입을 차단했습니다.

0x61A

POP_FX_PLUGIN 전원 엔진 플러그 인

POP_FX_DEVICE 디바이스

예약됨

전원 엔진 플러그 인에서 구성 요소의 성능 상태 정보에 대한 잘못된 정보를 제공했습니다.

0x61B

POP_FX_DEVICE 디바이스

구성 요소 인덱스

예약됨

드라이버가 디바이스 성능 상태를 등록하기 전에 성능 상태 요청을 실행했습니다.

0x61C

POP_FX_DEVICE 디바이스

구성 요소 인덱스

잘못된 매개 변수

값:

0: PerfChangesCount가 이 구성 요소에 대해 등록된 성능 상태 집합 수를 초과합니다.

드라이버가 잘못된 매개 변수를 사용하여 성능 상태 요청을 실행했습니다.

0x61D

POP_FX_DEVICE 디바이스

구성 요소 인덱스

미해결 요청 컨텍스트

이전 요청이 미해결 상태인 동안 드라이버가 성능 상태 요청을 실행했습니다.

0x61E

예약됨

예약됨

예약됨

자동 전환을 사용하는 동안 파워 엔진 플러그 인이 디버거 디바이스에서 중요한 전환을 수행하려고 했습니다.

0x61F

POP_FX_DEVICE 디바이스

조정된 유휴 상태 인덱스

예약됨

Power Engine 플러그 인이 플랫폼 전체 상태가 아닌 조정된 유휴 상태에 대해 자동 디버거 전환을 사용하도록 설정하려고 했습니다.

0x620

POP_FX_DEVICE 디바이스

조정된 유휴 상태 인덱스

예약됨

Power Engine 플러그 인이 플랫폼 전체 상태가 아닌 조정된 유휴 상태에 대한 D 상태 종속성을 등록하려고 했습니다.

0x621

POP_FX_DEVICE 디바이스

구성 요소 인덱스

조정된 유휴 상태 인덱스

전원 엔진 플러그 인이 플랫폼 전체 상태가 아닌 조정된 유휴 상태에 대한 F 상태 종속성을 등록하려고 했습니다.

0x622

부모 POP_FX_COMPONENT

자식 POP_FX_COMPONENT

예약됨

드라이버가 처리되지 않은 종속을 사용하여 PoFx에서 등록을 취소하려고 했습니다.

0x666

PPOP_PEP_ACTIVITY

새 활동 유형

0: DevicePowerOn

1: ComponentIdleStateChange

2: ComponentActivating

3: ComponentActive

4: DevicePowerOff

5: DeviceSuspend

충돌하는 활동 유형

0: DevicePowerOn

1: ComponentIdleStateChange

2: ComponentActivating

3: ComponentActive

4: DevicePowerOff

5: DeviceSuspend

기본 파워 엔진 플러그 인은 다른 활동과 충돌하는 새 활동을 트리거하려고 했습니다.

0x667

POP_PEP_ACTIVITY

활동 유형입니다.

0: DevicePowerOn

1: ComponentIdleStateChange

2: ComponentActivating

3: ComponentActive

4: DevicePowerOff

5: DeviceSuspend

POP_PEP_ACTIVITY_STATUS

기본 전원 엔진 플러그 인이 실행되고 있지 않은 작업을 완료하려고 했습니다.

0x668

참조 수가 업데이트되는 PPPM_COORDINATED_STATE.

이 함수에서 관찰하는 잘못된 참조 수 값입니다.

업데이트되는 플랫폼 유휴 상태의 마스크입니다.

기본 전원 엔진 플러그 인은 이전에 제한되지 않은 플랫폼 유휴 상태 제약 조건을 제거하려고 했습니다.

0x669

참조 수가 업데이트되는 PPPM_COORDINATED_STATE.

이 함수에서 관찰하는 잘못된 참조 수 값입니다.

예약됨

기본 전원 엔진 플러그 인에서 플랫폼 유휴 상태의 가용성에 대해 PoFx에 단독으로 알리려고 시도하는 동안 내부 일관성 오류가 발생했습니다.

매개 변수 1입니다. 매개 변수 2 매개 변수 3 매개 변수 4 원인

0x680

NTSTATUS 오류 코드입니다.

예약됨

예약됨

런타임 전원 프레임워크가 누락되거나 형식이 잘못되어 필요한 ACPI 테이블을 구문 분석할 수 없습니다. 이는 일반적으로 BIOS 오류 때문입니다.

0x700

PEPHANDLE

PEP_PPM_IDLE_SELECT

예약됨

전원 엔진 플러그 인에서 잘못된 프로세서 유휴 종속성을 지정했습니다.

0x701

중단된 프로세서의 선택한 유휴 상태의 인덱스입니다.

중단된 프로세서의 PRCB 주소

중단된 프로세서의 인덱스입니다.

프로세서가 할당된 간격 내에 유휴 전환을 완료할 수 없습니다. 지정된 프로세서가 중단되었음을 나타냅니다.

0x702

프로세서에서 선택한 유휴 상태의 인덱스입니다.

프로세서의 유휴 동기화 상태

중단된 프로세서의 PRCB 주소

OS가 PEP를 통해 명시적 절전 모드 해제를 시작하지 않고 프로세서가 중단 불가능한 상태에서 일어났습니다(필요한 PPM 유휴 동기화 사용).

0x703

PEPHANDLE

PEP_PPM_QUERY_PLATFORM_STATE

예약됨

파워 엔진 플러그 인이 쿼리 플랫폼 상태 알림 중에 잘못된 프로세서 유휴 종속성을 지정했습니다.

0x704

예약됨

예약됨

예약됨

조정된 유휴 상태 전환이 적시에 완료되지 않았습니다.

0x705

PEPHANDLE

알림

잘못 변경된 필드를 식별하는 4자 태그입니다. .formats 태그를 사용하여 커널 디버거에서 태그를 디코딩하고 태그는 < > 묶습니다.

전원 엔진 플러그 인이 알림에 전달된 버퍼의 읽기 전용 필드를 변경했습니다.

0x706

알림

잘못된 값이 포함된 필드를 식별하는 4자 태그입니다. .formats 태그를 사용하여 커널 디버거에서 태그를 디코딩하고 태그는 < > 묶습니다.

잘못된 값이 있는 배열에 잘못된 값 또는 인덱스

전원 엔진 플러그 인이 알림에 전달된 버퍼의 필드 중 하나에서 잘못된 값을 반환했습니다.

0 x 800

현재 CS 상태

예약됨

예약됨

시스템이 연결된 대기 상태인 동안 모니터가 예기치 않게 켜졌습니다.

0x801

표시 상태 변경 이유

표시 상태를 업데이트한 세션의 ID입니다.

예약됨

잘못된 표시 상태 전환이 발생했습니다.

0x802

디스플레이가 꺼진 POWER_MONITOR_REQUEST_REASON

전원 이벤트 프로세서를 사용하도록 설정하면 1이고, 그렇지 않으면 0입니다.

POP_PDC_IDLE_PHASE_WATCHDOG_CONTEXT 전역을 가리키는 포인터입니다.

PDC 시스템 유휴 단계(NoCsPhase)는 예상보다 긴 시간 동안 최신 대기로의 전환을 차단하고 있습니다.

0x900

책임 있는 전원 설정 콜백에 대한 포인터

전원 설정 콜백을 호출하기 전에 IRQL

전원 설정 콜백에서 돌아온 후 IRQL

수정된 IRQL을 사용하여 반환된 등록된 전원 설정 콜백입니다. 이는 콜백이 IRQL을 변경했지만 반환하기 전에 원래 IRQL을 복원하지 않았음을 나타냅니다.

0x901

DEVICE_OBJECT

IRP

스레드의 APC 사용 안 함 수

드라이버가 전원 IRP를 처리하는 동안 커널 APC를 사용/사용하지 않도록 설정했습니다.

0x4001

KE 오류 하위 코드입니다.

값:

0x100: (INTERNAL_POWER_ERROR_KE_PROCESSOR_ON_TIMED_OUT) 펌웨어가 프로세서의 전원을 켜는 데 너무 오래 걸렸습니다.

0x101: (INTERNAL_POWER_ERROR_KE_INVALID_INTERRUPT_TARGET) 잘못된 인터럽트 대상이 지정되었습니다.

0x102: (INTERNAL_POWER_ERROR_KE_SETDESTINATION_FAILED) 인터럽트 줄의 대상 대상을 변경하지 못했습니다.

0x103: (INTERNAL_POWER_ERROR_KE_IPI_REQUEST_FAILED) 인터럽트를 리디렉션하는 동안 IPI를 발급하지 못했습니다.

0x104: (INTERNAL_POWER_ERROR_KE_ARCH_NOT_SUPPORTED) 지원되지 않는 프로세서 아키텍처입니다.

예약됨

예약됨

(INTERNAL_POWER_ERROR_KE_SUBCODE) 전원 작동 중 커널 임원에서 내부 오류가 발생했습니다.

0xAA64

오류 코드

PSCI 함수 ID 진행 중

선택적 내부 컨텍스트 종속 데이터

AArm64 PSCI(전원 상태 조정 인터페이스) 함수에 복구할 수 없는 심각한 오류가 발생했습니다.

해결

일반 참고 사항

앞의 표에서 몇 가지 매개 변수는 구조체에 대한 포인터입니다. 예를 들어 매개 변수 2가 DEVICE_OBJECT 나열된 경우 매개 변수 2는 DEVICE_OBJECT 구조체에 대한 포인터입니다. 일부 구조체는 Windows 드라이버 키트에 포함된 wdm.h에 정의됩니다. 예를 들어 다음 구조체는 wdm.h에 정의되어 있습니다.

  • EXCEPTION_POINTERS
  • DEVICE_OBJECT
  • IO_STACK_LOCATION
  • PEP_DEVICE_REGISTER

앞의 표에 표시되는 일부 구조체는 공용 헤더 파일에 정의되지 않습니다. dt 디버거 명령을 사용하여 해당 구조체의 정의를 볼 수 있습니다. 다음 예제에서는 dt 명령을 사용하여 DEVICE_OBJECT_POWER_EXTENSION 구조를 확인하는 방법을 보여줍니다.

3: kd> dt nt!DEVICE_OBJECT_POWER_EXTENSION
   +0x000 IdleCount        : Uint4B
   +0x004 BusyCount        : Uint4B
   +0x008 BusyReference    : Uint4B
   +0x00c TotalBusyCount   : Uint4B
   +0x010 ConservationIdleTime : Uint4B
   +0x014 PerformanceIdleTime : Uint4B
   +0x018 DeviceObject     : Ptr64 _DEVICE_OBJECT
   +0x020 IdleList         : _LIST_ENTRY
   +0x030 IdleType         : _POP_DEVICE_IDLE_TYPE
   +0x034 IdleState        : _DEVICE_POWER_STATE
   +0x038 CurrentState     : _DEVICE_POWER_STATE
   +0x040 Volume           : _LIST_ENTRY
   +0x050 Specific         : <unnamed-tag>

다음 절차는 이 버그 검사 특정 인스턴스를 디버그하는 데 도움이 됩니다.

매개 변수 1이 0x2 경우 버그 검사 0xA0 디버깅

  1. 스택을 검사합니다. ntoskrnl을 찾습니다! PopExceptionFilter 함수입니다. 이 함수는 첫 번째 인수로 다음 코드를 포함합니다.

     (error_code << 16) | _LINE_
    

    호출자가 PopExceptionFilter경우 이 함수의 첫 번째 인수는 PEXCEPTION_POINTERS 형식입니다. 이 인수의 값을 확인합니다.

  2. dt(표시 형식) 명령을 사용하고 이전 단계에서 찾은 값을 인수지정합니다.

    dt nt!_EXCEPTION_POINTERS argument 
    

    이 명령은 구조를 표시합니다. 컨텍스트 레코드의 주소를 기록해 둡니다.

  3. .cxr(컨텍스트 레코드 표시) 명령을 사용하고 이전 단계에서 찾은 컨텍스트 레코드를 레코드지정합니다.

    .cxr record 
    

    이 명령은 레지스터 컨텍스트를 적절한 값으로 설정합니다.

  4. 다양한 명령을 사용하여 오류의 원인을 분석합니다. kb(Stack Backtrace 표시)시작합니다.

매개 변수 1이 0x7 경우 버그 검사 0xA0 디버깅

  1. 스택을 검사합니다. ntoskrnl을 찾습니다! PopExceptionFilter 함수입니다. 이 함수의 첫 번째 인수는 PEXCEPTION_POINTERS 형식입니다. 이 인수의 값을 확인합니다.

  2. dt(표시 형식) 명령을 사용하고 이전 단계에서 찾은 값을 인수지정합니다.

    dt nt!_EXCEPTION_POINTERS argument 
    

    이 명령은 구조를 표시합니다. 컨텍스트 레코드의 주소를 기록해 둡니다.

  3. .cxr(컨텍스트 레코드 표시) 명령을 사용하고 이전 단계에서 찾은 컨텍스트 레코드를 레코드지정합니다.

    .cxr record 
    

    이 명령은 레지스터 컨텍스트를 적절한 값으로 설정합니다.

  4. 다양한 명령을 사용하여 오류의 원인을 분석합니다. kb(Stack Backtrace 표시)시작합니다.

매개 변수 1이 0x101 경우 버그 검사 0xA0 디버깅

  1. dt(표시 형식) 명령을 사용하고 매개 변수 3의 값을 인수지정합니다.

    dt nt!_EXCEPTION_POINTERS argument 
    

    이 명령은 구조를 표시합니다. 컨텍스트 레코드의 주소를 기록해 둡니다.

  2. .cxr(컨텍스트 레코드 표시) 명령을 사용하고 이전 단계를 레코드찾은 컨텍스트 레코드를 지정합니다.

    .cxr record 
    

    이 명령은 레지스터 컨텍스트를 적절한 값으로 설정합니다.

  3. 다양한 명령을 사용하여 오류의 원인을 분석합니다. kb(Stack Backtrace 표시)시작합니다.

참고 항목

오류 검사 코드 참조