IRP를 완료해야 하는 경우

드라이버는 다음 조건이 충족되면 IRP 완료를 시작해야 합니다.

  • 드라이버는 잘못된 매개 변수 또는 기타 조건으로 인해 IRP 처리가 진행될 수 없다고 결정합니다.

  • 드라이버는 드라이버 스택 아래로 IRP를 전달하지 않고 요청된 I/O 작업을 처리할 수 있으며 작업이 완료되었습니다.

  • IRP가 취소되고 있습니다. ( IRP 취소를 참조하세요.)

이러한 조건이 충족되지 않으면 드라이버의 디스패치 루틴이 IRP를 다음 하위 드라이버로 전달하거나 I/O 요청 처리를 처리해야 합니다. 조건 중 하나가 충족되면 드라이버는 IoCompleteRequest를 호출해야 합니다.

처리가 진행될 수 없기 때문에 드라이버가 요청을 완료하거나 실제로 디바이스에 액세스하지 않고 요청된 작업을 처리하여 요청을 완료하는 경우 일반적으로 디스패치 루틴 중 하나에서 IoCompleteRequest 를 호출합니다. 자세한 내용은 디스패치 루틴에서 IRP 완료를 참조하세요.

드라이버가 요청을 충족하기 위해 디바이스에 액세스해야 하는 경우 일반적으로 DpcForIsr 루틴에서 IoCompleteRequest를 호출합니다. 이러한 루틴은 서비스 인터럽트에서 광범위하게 설명됩니다.