버그 확인 0xC9: DRIVER_VERIFIER_IOMANAGER_VIOLATION
DRIVER_VERIFIER_IOMANAGER_VIOLATION 버그 검사의 값은 0x000000C9. 모든 드라이버 검증 도구 I/O 확인 위반에 대한 버그 확인 코드입니다.
Important
이 문서는 프로그래머를 위한 것입니다. 컴퓨터를 사용하는 동안 파란색 화면 오류 코드를 받은 고객인 경우 파란색 화면 오류 문제 해결을 참조하세요.
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 DRIVER ERROR XXX입니다. 여기서 XXX 는 특정 오류를 나타내는 16진수 코드입니다. (I/O 오류 코드 및 해당 의미 목록은 아래 표를 참조하세요.)
오류를 발생시킨 드라이버의 이름입니다.
일반적으로 오류가 검색된 드라이버 코드의 주소(매개 변수 2)입니다.
커널 모드 크래시 덤프를 사용하도록 설정한 경우 크래시 덤프 파일에 다음 정보가 표시됩니다.
메시지 BugCheck 0xC9(DRIVER_VERIFIER_IOMANAGER_VIOLATION)입니다.
16진수 I/O 오류 코드입니다. (I/O 오류 코드 및 해당 의미 목록은 아래 표를 참조하세요.)
일반적으로 오류가 검색된 드라이버 코드의 주소(매개 변수 2)입니다.
커널 디버거가 이 위반을 일으킨 시스템에 연결된 경우 다음 정보가 디버거로 전송됩니다.
오류의 심각도 평가와 함께 WDM DRIVER ERROR 메시지입니다.
오류를 발생시킨 드라이버의 이름입니다.
이 오류의 원인을 설명하는 설명 문자열입니다. IRP에 대한 포인터 또는 디바이스 개체 또는 IRQL 정보에 대한 포인터와 같은 추가 정보가 전달되는 경우가 많습니다. (이러한 설명 문자열 목록 및 지정된 추가 정보는 아래 표를 참조하세요.)
추가 작업에 대한 쿼리입니다. 가능한 응답은 b (break), 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 |
Warning |
호출자가 IRP 스택을 복사했지만 완료 루틴을 설정하지 않았습니다. 비효율적입니다. 대신 IoSkipCurrentIrpStackLocation을 사용합니다. Param 2 - 예약됨 Param 3 - 예약됨 |
0x21D |
심각한 오류 |
IRP 디스패치 처리기가 제거 IRP를 받으면 아래 스택에서 제대로 분리되지 않았습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. Param 4 - 디바이스 개체 주소입니다. |
0x21E |
심각한 오류 |
IRP 디스패치 처리기가 제거 IRP를 받으면 해당 디바이스 개체를 제대로 삭제하지 않았습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. Param 4 - 디바이스 개체 주소입니다. |
0x21F |
치명적이 아닌 오류 |
드라이버가 필요한 IRP 주 함수에 대한 디스패치 루틴을 작성하지 않았습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. |
0x220 |
치명적이 아닌 오류 |
IRP_MJ_SYSTEM_CONTROL ProviderId 이외의 다른 사용자가 완료했습니다. 이 IRP는 이전에 완료되었거나 전달되어야 합니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. Param 4 - ProviderId. |
0x221 |
심각한 오류 |
PDO에 대한 IRP 디스패치 처리기가 디바이스 개체를 삭제했지만 하드웨어가 버스 관계 쿼리에서 누락된 것으로 보고되지 않았습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. Param 4 - 디바이스 개체 주소입니다. |
0x222 |
심각한 오류 |
PDO가 아직 활성 상태일 때 제거 IRP를 받으면 버스 필터의 IRP 디스패치 처리기가 분리되었습니다. 버스 필터는 FastIoDetach 콜백에서 정리해야 합니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. Param 4 - 디바이스 개체 주소입니다. |
0x223 |
심각한 오류 |
버스 필터에 대한 IRP 디스패치 처리기가 해당 디바이스 개체를 삭제했지만 PDO는 여전히 존재합니다. 버스 필터는 FastIoDetach 콜백에서 정리해야 합니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. Param 4 - 디바이스 개체 주소입니다. |
0x224 |
심각한 오류 |
IRP 디스패치 처리기가 IRP의 IoStatus.Status 필드와 일치하지 않는 상태를 반환했습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. Param 4 - 예상 상태 코드입니다. |
0x225 |
치명적이 아닌 오류 |
IRP 디스패치 처리기가 잘못된 상태를 반환했습니다(0xFFFFFFFF). 초기화되지 않은 스택 변수 때문일 수 있습니다. 이 오류를 디버그하려면 지정된 주소와 함께 ln(가장 가까운 기호 나열) 명령을 사용합니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. Param 4 - 상태 코드입니다. |
0x226 |
심각한 오류 |
IRP 디스패치 처리기가 이 IRP를 전달하거나 완료하지 않고 반환되었거나 다른 사용자가 STATUS_PENDING 반환하지 않았습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. |
0x227 |
심각한 오류 |
IRP 완료 루틴은 페이저블 코드에 있습니다. (허용되지 않습니다.) Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. |
0x228 |
치명적이 아닌 오류 |
전달된 IRP에서 PendingReturned 필드가 설정된 경우 드라이버의 완료 루틴이 보류 중인 IRP를 표시하지 않았습니다. 따라서 특히 스택에서 오류가 반환되는 경우 Windows가 중단될 수 있습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. |
0x229 |
심각한 오류 |
현재 스택의 낮은 드라이버에서 처리 중인 IRP에 대해 취소 루틴이 설정되었으며 취소 루틴을 밟을 수 있습니다. Param 2 - Reserved. Param 3 - Reserved. |
0x22A |
치명적이 아닌 오류 |
PDO(물리적 디바이스 개체)가 필요한 IRP에 응답하지 않았습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. |
0x22B |
치명적이 아닌 오류 |
PDO(물리적 디바이스 개체)는 TargetDeviceRelation 쿼리에 대한 PDO를 사용하여 디바이스 관계 목록을 채우는 것을 잊어버렸습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 3 - IRP 주소입니다. |
0x22C |
심각한 오류 |
TargetDeviceRelation 쿼리를 구현하는 코드가 PDO에서 ObReferenceObject를 호출하지 않았습니다. Param 2 - Reserved. Param 3 - Reserved. |
0x22D |
치명적이 아닌 오류 |
호출자가 전달하지 않고 이해하지 못한 IRP_MJ_PNP 완료했습니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 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 - Reserved. Param 3 - Reserved. |
0x238 |
Warning |
IoInitializeIrp의 호출자가 IoAllocateIrp로 할당된 IRP를 전달했습니다. 이는 불법이며, 불필요하며, 정상적인 사용에서 성능에 부정적인 영향을 줍니다. 이 IRP가 재활용되는 경우 Windows 드라이버 키트의 IoReuseIrp를 참조하세요. Param 2 - Reserved. Param 3 - Reserved. |
0x239 |
Warning |
IoCompleteRequest의 호출자가 IoCallDriver 또는 PoCallDriver에 대한 호출을 통해 전달된 적이 없는 IRP를 완료하고 있습니다. 버그일 수 있습니다. Param 2 - Reserved. Param 3 - Reserved. |
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 - Reserved. Param 3 - Reserved. |
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 - Reserved. Param 3 - Reserved. |
0x240 |
심각한 오류 |
드라이버가 IoDeleteDevice에 대한 이전 호출을 통해 이미 삭제된 디바이스 개체를 삭제하려고 합니다. Param 2 - 오류가 감지된 드라이버 코드의 주소입니다. Param 2 - Reserved. Param 3 - Reserved. |
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 - Reserved. Param 3 - Reserved. Param 4 - |
0x244 |
심각한 오류 |
드라이버가 연결 중인 디바이스 개체에서 DO_BUFFERED_IO 또는 DO_DIRECT_IO 플래그를 복사하지 않았습니다. Param 2 - Reserved. Param 3 - Reserved. |
0x245 |
심각한 오류 |
드라이버가 DO_BUFFERED_IO 및 DO_DIRECT_IO 플래그를 모두 설정했습니다. 이러한 플래그는 상호 배타적입니다. Param 2 - Reserved. Param 3 - Reserved. |
0x246 |
심각한 오류 |
드라이버가 연결 중인 디바이스 개체에서 DeviceType 필드를 복사하지 못했습니다. Param 2 - Reserved. Param 3 - Reserved. |
0x247 |
심각한 오류 Param 2 - Reserved. Param 3 - Reserved. |
드라이버가 법적으로 실패할 수 없는 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 - Reserved. Param 4 - Reserved. |
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 주소입니다. |
원인
원인에 대한 설명은 매개 변수 섹션의 각 코드 설명을 참조하세요.
해결
이 버그 검사는 드라이버 검증 도구가 하나 이상의 드라이버를 모니터링하라는 지시를 받은 경우에만 발생할 수 있습니다. 드라이버 검증 도구를 사용하지 않으려면 비활성화해야 합니다. 자세한 내용은 드라이버 검증 도구에서 "드라이버 검증 도구를 제어하는 방법"을 참조하세요. 이 문제를 일으킨 드라이버를 업데이트하거나 제거하는 것이 좋습니다.
드라이버 개발자인 경우 이 버그 검사를 통해 얻은 정보를 사용하여 코드의 버그를 수정합니다.
드라이버 검증 도구에 대한 자세한 내용은 드라이버 검증 도구를 참조 하세요.