버그 검사 0xC9: DRIVER_VERIFIER_IOMANAGER_VIOLATION

DRIVER_VERIFIER_IOMANAGER_VIOLATION 버그 검사 값은 0x000000C9. 이는 모든 드라이버 검증 도구 I/O 확인 위반에 대한 버그 검사 코드입니다.

중요

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

DRIVER_VERIFIER_IOMANAGER_VIOLATION 매개 변수

드라이버 검증 도구가 활성 상태이고 I/O 확인이 선택되면 다양한 I/O 위반으로 인해 이 버그 검사 발생합니다. 매개 변수 1은 위반 유형을 식별합니다.

매개 변수 1 매개 변수 2 매개 변수 3 매개 변수 4 오류 원인

0x01

해제되는 IRP의 주소

0

0

드라이버가 형식이 IO_TYPE_IRP 않은 개체를 해제하려고 했습니다.

0x02

해제되는 IRP의 주소

0

0

드라이버는 여전히 스레드와 연결된 IRP를 해제하려고 했습니다.

0x03

전송되는 IRP의 주소

0

0

드라이버가 IRP 형식이 IRP_TYPE 같지 않은 IoCallDriver 를 전달했습니다.

0x04

디바이스 개체의 주소

0

0

드라이버가 IoCallDriver 에 잘못된 디바이스 개체를 전달했습니다.

0x05

잘못된 드라이버와 연결된 디바이스 개체의 주소

IoCallDriver 이전 IRQL

IoCallDriver 이후 IRQL

드라이버 디스패치 루틴을 호출하는 동안 IRQL이 변경되었습니다.

0x06

IRP 상태

완료되는 IRP의 주소

0

드라이버는 보류 중(또는 -1과 같음)으로 표시된 상태 사용하여 IoCompleteRequest를 호출했습니다.

0x07

취소 루틴 주소

완료되는 IRP의 주소

0

취소 루틴이 설정된 동안 드라이버는 IoCompleteRequest 를 호출했습니다.

0x08

디바이스 개체의 주소

IRP 주 함수 코드

예외 상태 코드

드라이버가 잘못된 버퍼를 IoBuildAsynchronousFsdRequest 에 전달했습니다.

0x09

디바이스 개체의 주소

I/O 제어 코드

예외 상태 코드

드라이버가 잘못된 버퍼인 IoBuildDeviceIoControlRequest 를 전달했습니다.

0x10

현재 IRQL

예약됨

예약됨

IoCallDriver는 DISPATCH_LEVEL 위에서 호출되었습니다.

0x11

드라이버 빠른 I/O 디스패치 루틴 주소

드라이버 디스패치 루틴을 호출하기 전에 IRQL

현재 IRQL

IoCallDriver는 DISPATCH_LEVEL 위에서 호출되었습니다.

0x12

드라이버 디스패치 루틴 주소

드라이버 디스패치 루틴을 호출하기 전에 IRQL

현재 IRQL

IoCallDriver는 DISPATCH_LEVEL 위에서 호출되었습니다.

0x0A

디바이스 개체의 주소

0

0

드라이버는 이미 초기화된 타이머가 있는 디바이스 개체인 IoInitializeTimer 을 전달했습니다.

0x0C

I/O 상태 블록의 주소

0

0

드라이버는 IRP에 I/O 상태 블록을 전달했지만 이 블록은 이미 해당 지점을 지나서 해제된 스택에 할당됩니다.

0x0D

사용자 이벤트 개체의 주소

0

0

드라이버가 사용자 이벤트를 IRP에 전달했지만 이 이벤트는 해당 지점을 이미 해제한 스택에 할당됩니다.

0x0E

현재 IRQL

IRP 주소

0

IRQL > DISPATCH_LEVEL IoCompleteRequest라는 드라이버입니다.

0x0F

IRP가 전송되는 디바이스 개체의 주소

IRP에 대한 포인터

파일 개체에 대한 포인터

드라이버가 닫혔거나 열려 있는 파일 개체가 취소된 만들기 요청을 보냈습니다.

이전 표에 언급된 오류 외에도 드라이버 검증 도구가 시스템을 중지시키는 여러 I/O 확인 오류가 있지만 실제로는 버그 검사가 아닙니다.

이러한 오류로 인해 메시지가 파란색 화면, 크래시 덤프 파일 및 커널 디버거에 표시됩니다. 이러한 메시지는 이러한 각 위치에 다르게 표시됩니다. 이러한 오류가 발생하면 16진수 버그 검사 코드 0xC9 및 버그 검사 문자열 DRIVER_VERIFIER_IOMANAGER_VIOLATION 파란색 화면이나 디버거에 표시되지 않지만 크래시 덤프 파일에 표시됩니다.

파란색 화면에 다음 데이터가 표시됩니다.

  • 메시지 IO 시스템 확인 오류입니다.

  • 메시지 WDM 드라이버 오류XXX입니다. 여기서 XXX는 특정 오류를 나타내는 16진수 코드입니다. I/O 오류 코드 목록과 그 의미는 아래 표를 참조하세요.

  • 오류를 발생시킨 드라이버의 이름입니다.

  • 일반적으로 오류가 검색된 드라이버 코드의 주소입니다(매개 변수 2).

커널 모드 크래시 덤프를 사용하도록 설정한 경우 크래시 덤프 파일에 다음 정보가 표시됩니다.

  • bugCheck 0xC9(DRIVER_VERIFIER_IOMANAGER_VIOLATION) 메시지입니다.

  • 16진수 I/O 오류 코드입니다. I/O 오류 코드 목록과 그 의미는 아래 표를 참조하세요.

  • 일반적으로 오류가 검색된 드라이버 코드의 주소입니다(매개 변수 2).

커널 디버거가 이 위반을 일으킨 시스템에 연결된 경우 다음 정보가 디버거로 전송됩니다.

  • 오류의 심각도 평가와 함께 WDM DRIVER ERROR 메시지입니다.

  • 오류를 발생시킨 드라이버의 이름입니다.

  • 이 오류의 원인을 설명하는 설명 문자열입니다. IRP에 대한 포인터 또는 디바이스 개체 또는 IRQL 정보에 대한 포인터와 같은 추가 정보가 전달되는 경우가 많습니다. 이러한 설명 문자열 목록과 지정된 추가 정보는 아래 표를 참조하세요.

  • 추가 작업에 대한 쿼리입니다. 가능한 응답은 b (중단), i (무시), z (zap), r (제거) 또는 d (사용 안 함)입니다. 운영 체제에 계속 지시하면 이 오류가 발생하지 않은 경우 "줄 아래로"가 어떻게 되는지 확인할 수 있습니다. 물론 이는 종종 추가 버그 검사로 이어질 수 있습니다. "zap" 옵션은 실제로 이 오류를 검색한 중단점을 제거합니다.

참고 이러한 방식으로 다른 버그 검사를 무시할 수 없습니다. 이러한 종류의 I/O 확인 오류만 무시할 수 있으며 커널 디버거가 연결된 경우에만 이러한 오류를 무시할 수 있습니다.

다음 표에는 나타날 수 있는 I/O 확인 오류가 나열됩니다.

I/O 오류 코드 심각도 오류 원인

0x200

Unknown

이 코드는 알 수 없는 모든 I/O 확인 오류를 다룹니다.

0x201

심각한 오류

드라이버 스택에 다른 디바이스가 있는 동안 디바이스가 자체 삭제됩니다. 이는 호출자가 먼저 IoDetachDevice 를 호출하는 것을 잊어버렸거나 낮은 드라이버가 자체적으로 잘못 삭제되었을 수 있기 때문일 수 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

0x202

심각한 오류

드라이버가 아무것도 연결되지 않은 디바이스 개체에서 분리하려고 했습니다. 동일한 디바이스 개체에서 분리가 두 번 호출된 경우 이 문제가 발생할 수 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - 디바이스 개체 주소입니다.

0x203

심각한 오류

드라이버가 IRP의 취소 루틴을 NULL로 설정하지 않고 IoCallDriver를 호출했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x204

심각한 오류

호출자가 NULL 에서 디바이스 개체로 전달되었습니다. 이것은 치명적입니다.

Param 2 - 예약됨

Param 3 - 예약됨

0x205

심각한 오류

호출자가 현재 큐에 대기 중인 IRP를 전달하고 있습니다. 이 드라이버에서 STATUS_PENDING 반환하는 IRP를 처리하는 코드가 손상된 것처럼 보입니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x206

심각한 오류

호출자가 IRP를 잘못 전달했습니다(제어 필드가 0이 아님). 드라이버는 IoCopyCurrentIrpStackLocationToNext 또는 IoSkipCurrentIrpStackLocation을 사용해야 합니다.

Param 2 - 예약됨

Param 3 - 예약됨

0x207

심각한 오류

호출자가 스택을 수동으로 복사했으며 실수로 상위 계층의 완료 루틴을 복사했습니다. 드라이버는 IoCopyCurrentIrpStackLocationToNext를 사용해야 합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x208

심각한 오류

이 IRP는 스택 위치가 부족합니다. 누군가가 다른 스택에서 이 IRP를 전달했을 수 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x209

심각한 오류

호출자가 현재 큐에 대기 중인 IRP를 완료하고 있습니다. 이 드라이버에서 STATUS_PENDING 반환하는 IRP를 처리하는 코드가 손상된 것처럼 보입니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x20A

심각한 오류

IoFreeIrp 호출자가 아직 사용 중인 IRP를 해제하고 있습니다.

Param 2 - 예약됨

Param 3 - 예약됨

0x20B

심각한 오류

IoFreeIrp 호출자가 아직 사용 중인 IRP를 해제하고 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x20C

심각한 오류

IoFreeIrp의 호출자가 스레드에 대해 여전히 큐에 대기 중인 IRP를 해제합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x20D

심각한 오류

IoInitializeIrp의 호출자가 IoAllocateIrp와 함께 할당된 IRP를 전달했습니다. 이것은 불법이며 불필요하며 할당량 누출을 일으켰습니다. 이 IRP가 재활용되는 경우 IoReuseIrp 에 대한 설명서를 확인합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x20E

치명적이 아닌 오류

PNP IRP에 잘못된 상태 있습니다. (모든 PNP IRP에는 STATUS_NOT_SUPPORTED 초기화된 상태 있어야 합니다.)

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x20F

치명적이 아닌 오류

Power IRP에 잘못된 상태 있습니다. (모든 Power IRP에는 STATUS_NOT_SUPPORTED 초기화된 상태 있어야 합니다.)

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x210

치명적이 아닌 오류

WMI IRP에 잘못된 상태 있습니다. (모든 WMI IRP에는 STATUS_NOT_SUPPORTED 초기화된 상태 있어야 합니다.)

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x211

치명적이 아닌 오류

호출자가 스택에서 디바이스 개체를 건너뛰는 동안 IRP를 전달했습니다. 호출자는 IoAttachDeviceToDeviceStack에서 반환된 디바이스 대신 PDO로 IRP를 보낼 수 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x212

치명적이 아닌 오류

호출자가 휴지통을 사용했거나 IRP 스택을 제대로 복사하지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x213

치명적이 아닌 오류

호출자가 이해하지 못하는 IRP의 상태 필드를 변경했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x214

치명적이 아닌 오류

호출자가 이해하지 못하는 IRP의 정보 필드를 변경했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x215

치명적이 아닌 오류

IRP_MJ_PNP 대한 성공적이지 않은 STATUS_NOT_SUPPORTED IRP 상태 스택으로 전달되고 있습니다. 실패한 PNP IRP를 완료해야 합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x216

치명적이 아닌 오류

이전에 설정한 IRP_MJ_PNP 상태 STATUS_NOT_SUPPORTED 변환되었습니다. 이 오류 상태 운영 체제에서 사용하도록 예약되어 있습니다. 드라이버는 이 값으로 PnP IRP를 실패할 수 없습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x217

치명적이 아닌 오류

드라이버가 필요한 IRP를 처리하지 않았습니다. 드라이버는 IRP의 상태 업데이트하여 처리 여부를 나타내야 합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x218

치명적이 아닌 오류

드라이버가 스택의 다른 디바이스 개체에 대해 예약된 IRP에 응답했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x219

치명적이 아닌 오류

IRP_MJ_POWER 대한 성공적이지 않은 STATUS_NOT_SUPPORTED IRP 상태 스택으로 전달되고 있습니다. 실패한 POWER IRP를 완료해야 합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x21A

치명적이 아닌 오류

이전에 설정한 IRP_MJ_POWER 상태 STATUS_NOT_SUPPORTED 변환되었습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x21B

치명적이 아닌 오류

드라이버가 의심스러운 상태 반환했습니다. 이는 드라이버에서 초기화되지 않은 변수 버그 때문일 수 있습니다.

Param 3 - IRP 주소입니다.

0x21C

경고

호출자가 IRP 스택을 복사했지만 완료 루틴을 설정하지 않았습니다. 비효율적입니다. 대신 IoSkipCurrentIrpStackLocation 을 사용합니다.

Param 2 - 예약됨

Param 3 - 예약됨

0x21D

심각한 오류

IRP 디스패치 처리기가 제거 IRP를 수신할 때 아래 스택에서 제대로 분리되지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x21E

심각한 오류

IRP 디스패치 처리기가 제거 IRP를 수신할 때 해당 디바이스 개체를 제대로 삭제하지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x21F

치명적이 아닌 오류

드라이버가 필요한 IRP 주 함수에 대한 디스패치 루틴을 작성하지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

0x220

치명적이 아닌 오류

IRP_MJ_SYSTEM_CONTROL ProviderId 이외의 다른 사용자가 완료했습니다. 이 IRP는 이전에 완료되었거나 전달되었어야 합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

Param 4 - ProviderId.

0x221

심각한 오류

PDO에 대한 IRP 디스패치 처리기가 디바이스 개체를 삭제했지만 하드웨어가 버스 관계 쿼리에서 누락된 것으로 보고되지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x222

심각한 오류

PDO가 아직 활성 상태일 때 제거 IRP를 받으면 버스 필터의 IRP 디스패치 처리기가 분리되었습니다. 버스 필터는 FastIoDetach 콜백에서 클린 합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x223

심각한 오류

버스 필터에 대한 IRP 디스패치 처리기가 디바이스 개체를 삭제했지만 PDO는 여전히 존재합니다. 버스 필터는 FastIoDetach 콜백에서 클린 합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x224

심각한 오류

IRP 디스패치 처리기가 IRP의 IoStatus.Status 필드와 일치하지 않는 상태 반환했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

Param 4 - 필요한 상태 코드입니다.

0x225

치명적이 아닌 오류

IRP 디스패치 처리기가 잘못된 상태(0xFFFFFFFF) 반환했습니다. 이는 초기화되지 않은 스택 변수 때문일 수 있습니다. 이 오류를 디버그하려면 지정된 주소와 함께 ln(가장 가까운 기호 나열) 명령을 사용합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

Param 4 - 상태 코드입니다.

0x226

심각한 오류

IRP 디스패치 처리기가 이 IRP를 전달하거나 완료하지 않고 반환되었거나 누군가가 STATUS_PENDING 반환하는 것을 잊어버렸습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

0x227

심각한 오류

IRP 완료 루틴은 페이저블 코드에 있습니다. (허용되지 않습니다.)

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

0x228

치명적이 아닌 오류

전달된 IRP에서 PendingReturned 필드가 설정된 경우 드라이버의 완료 루틴이 보류 중인 IRP를 표시하지 않았습니다. 특히 스택에서 오류가 반환되는 경우 Windows가 중단될 수 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

0x229

심각한 오류

현재 스택의 낮은 드라이버에서 처리 중인 IRP에 대해 취소 루틴이 설정되어 취소 루틴을 밟을 수 있습니다.

Param 2 - Reserved.

Param 3 - Reserved.

0x22A

치명적이 아닌 오류

PDO(물리적 디바이스 개체)가 필요한 IRP에 응답하지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

0x22B

치명적이 아닌 오류

PDO(물리적 디바이스 개체)가 TargetDeviceRelation 쿼리에 대한 PDO로 디바이스 관계 목록을 채우는 것을 잊어버렸습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

0x22C

심각한 오류

TargetDeviceRelation 쿼리를 구현하는 코드는 PDO에서 ObReferenceObject를 호출하지 않았습니다.

Param 2 - Reserved.

Param 3 - Reserved.

0x22D

치명적이 아닌 오류

호출자가 전달하지 않고 이해하지 못한 IRP_MJ_PNP 완료했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

매개 변수 3 - IRP 주소입니다.

0x22E

치명적이 아닌 오류

호출자가 이를 전달하는 대신 성공적인 IRP_MJ_PNP 완료했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x22F

치명적이 아닌 오류

호출자가 IRP를 전달하는 대신 손길이 닿지 않은 IRP_MJ_PNP 완료했거나 PDO가 아닌 경우 잘못된 값의 STATUS_NOT_SUPPORTED 사용하여 IRP에 실패했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x230

치명적이 아닌 오류

호출자가 전달하지 않고 이해하지 못한 IRP_MJ_POWER 완료했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x231

심각한 오류

호출자가 전달하지 않고 성공적인 IRP_MJ_POWER 완료했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x232

치명적이 아닌 오류

호출자가 IRP를 전달하는 대신 손길이 닿지 않은 IRP_MJ_POWER 완료했거나 PDO가 아닌 경우 잘못된 값의 STATUS_NOT_SUPPORTED 사용하여 IRP에 실패했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x233

치명적이 아닌 오류

쿼리 기능 IRP에서 쿼리 기능 구조의 버전 필드가 제대로 초기화되지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x234

치명적이 아닌 오류

쿼리 기능 IRP에서 쿼리 기능 구조의 크기 필드가 제대로 초기화되지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x235

치명적이 아닌 오류

쿼리 기능 IRP의 쿼리 기능 구조의 주소 필드가 -1로 제대로 초기화되지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x236

치명적이 아닌 오류

쿼리 기능 IRP의 쿼리 기능 구조의 UI 번호 필드가 -1로 제대로 초기화되지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x237

심각한 오류

드라이버가 시스템 사용에만 제한된 IRP를 보냈습니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x238

경고

IoInitializeIrp의 호출자가 IoAllocateIrp와 함께 할당된 IRP를 전달했습니다. 이는 불법이며 불필요하며 정상적인 사용에서 성능에 부정적인 영향을 줍니다. 이 IRP가 재활용되는 경우 Windows 드라이버 키트의 IoReuseIrp 을 참조하세요.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x239

경고

IoCompleteRequest 호출자가 IoCallDriver 또는 PoCallDriver에 대한 호출을 통해 전달된 적이 없는 IRP를 완료하고 있습니다. 버그일 수 있습니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x23A

심각한 오류

드라이버가 이 주요 코드에 대해 잘못된 IRQL에서 IRP를 전달했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x23B

치명적이 아닌 오류

호출자가 이해하지 못하는 IRP의 상태 필드를 변경했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

다음 표에는 나타날 수 있는 추가 I/O 확인 오류가 나와 있습니다. 이러한 오류는 향상된 I/O 확인 이 활성화될 때 나타납니다. 자세한 내용은 향상된 I/O 확인을 참조하세요.

I/O 오류 코드 심각도 오류 원인

0x23C

심각한 오류

드라이버가 IRP의 취소 루틴을 NULL로 설정하지 않고 IRP를 완료했습니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x23D

치명적이 아닌 오류

드라이버가 STATUS_PENDING 반환했지만 IoMarkIrpPending 호출을 통해 보류 중인 IRP를 표시하지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 상태 코드입니다.

0x23E

치명적이 아닌 오류

드라이버가 보류 중인 IRP를 표시했지만 STATUS_PENDING 반환하지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 상태 코드입니다.

0x23F

심각한 오류

드라이버가 연결된 스택에서 DO_POWER_PAGABLE 비트를 상속하지 않았습니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x240

심각한 오류

드라이버가 IoDeleteDevice에 대한 이전 호출을 통해 이미 삭제된 디바이스 개체를 삭제하려고 합니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x241

심각한 오류

드라이버가 IRP를 깜짝 제거하는 동안 디바이스 개체를 분리했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x242

심각한 오류

드라이버가 IRP를 깜짝 제거하는 동안 디바이스 개체를 삭제했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x243

심각한 오류

드라이버가 AddDevice의 끝에서 DO_DEVICE_INITIALIZING 플래그를 지우지 못했습니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

Param 4 -

0x244

심각한 오류

드라이버가 연결 중인 디바이스 개체에서 DO_BUFFERED_IO 또는 DO_DIRECT_IO 플래그를 복사하지 않았습니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x245

심각한 오류

드라이버가 DO_BUFFERED_IO 및 DO_DIRECT_IO 플래그를 모두 설정했습니다. 이러한 플래그는 상호 배타적입니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x246

심각한 오류

드라이버가 연결 중인 디바이스 개체에서 DeviceType 필드를 복사하지 못했습니다.

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

0x247

심각한 오류

Param 2 - 예약되었습니다.

Param 3 - 예약됨.

드라이버가 합법적으로 실패할 수 없는 IRP에 실패했습니다.

0x248

심각한 오류

드라이버가 PDO가 아닌 디바이스 개체를 디바이스 관계 쿼리에 추가했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x249

치명적이 아닌 오류

드라이버가 동일한 디바이스 ID를 반환하는 두 개의 자식 PDO를 열거했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - 첫 번째 디바이스 개체 주소입니다.

Param 4 - 두 번째 디바이스 개체 주소입니다.

0x24A

심각한 오류

드라이버가 IRQL이 PASSIVE_LEVEL 같지 않은 파일 I/O 함수를 잘못 호출했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - 예약됨.

Param 4 - 예약됨.

0x24B

심각한 오류

드라이버는 TargetDeviceRelation 형식의 IRP_MN_QUERY_DEVICE_RELATIONS 요청을 성공적으로 완료했지만 요청을 제대로 작성하거나 IRP를 기본 하드웨어 스택으로 전달하지 못했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - 디바이스 개체 주소입니다.

0x24C

치명적이 아닌 오류

드라이버가 STATUS_PENDING 반환했지만 IoMarkIrpPending을 호출하여 보류 중인 IRP를 표시하지 않았습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 상태 코드입니다.

0x24D

심각한 오류

드라이버가 잘못된 디바이스 개체를 PDO가 필요한 함수에 전달했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 디바이스 개체 주소입니다.

0x300

치명적이 아닌 오류

드라이버가 의심스러운 상태 반환했습니다. 이는 드라이버에서 초기화되지 않은 변수 버그 때문일 수 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 의심스러운 상태 코드입니다.

0x301

치명적이 아닌 오류

드라이버가 IRQL > DISPATCH_LEVEL IRP를 전달했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 잘못된 IRQL 값

0x302

치명적이 아닌 오류

드라이버가 IRQL > = APC_LEVEL IRP를 전달했습니다.

I/O 관리자는 이 요청을 완료하기 위해 APC를 큐에 대기해야 합니다. 호출자가 이미 APC 수준에 있으므로 APC를 실행할 수 없으므로 호출자가 교착 상태에 빠질 수 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

Param 4 - 잘못된 IRQL 값입니다.

0x306

치명적이 아닌 오류

드라이버가 오류 상태 코드로 IRP_MJ_PNP(주) 및 IRP_MN_REMOVE_DEVICE(부) 요청을 완료하고 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x307

치명적이 아닌 오류

드라이버는 이미 신호를 받고 STATUS_PENDING 응답을 받은 이벤트와 함께 I/O 요청을 실행했습니다. 이로 인해 I/O가 완료되기 전에 해제할 수 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x310

치명적이 아닌 오류

드라이버가 아직 사용 중인 IRP를 다시 초기화하고 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x311

치명적이 아닌 오류

드라이버는 IoMakeAssociatedIrp, IoBuildAsynchronousFsdRequest, IoBuildSynchronousFsdRequest, IoBuildDeviceIoControlRequest를 사용하여 만든 IRP를 다시 초기화하고 있습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

0x312

치명적이 아닌 오류

호출자는 IRP 상태 정보 필드에 시스템 버퍼의 출력 섹션보다 큰 값을 제공했습니다.

Param 2 - 오류가 검색된 드라이버 코드의 주소입니다.

Param 3 - IRP 주소입니다.

원인

원인에 대한 설명은 매개 변수 섹션의 각 코드 설명을 참조하세요.

해결 방법

이 버그 검사 드라이버 검증 도구가 하나 이상의 드라이버를 모니터링하라는 지시를 받은 경우에만 발생할 수 있습니다. 드라이버 검증 도구는 사용하지 않으려면 비활성화해야 합니다. 자세한 내용은 드라이버 검증 도구의 "드라이버 검증 도구 제어 방법"을 참조하세요. 이 문제를 일으킨 드라이버를 업데이트하거나 제거하는 것도 고려할 수 있습니다.

드라이버 개발자인 경우 이 버그 검사 통해 얻은 정보를 사용하여 코드의 버그를 수정합니다.

드라이버 검증 도구에 대한 자세한 내용은 드라이버 검증 도구 를 참조하세요.