Quando concluir um IRP
Um driver deve iniciar a conclusão do IRP quando qualquer uma das seguintes condições for atendida:
O driver determina que o processamento de IRP não pode progredir devido a parâmetros inválidos ou outras condições.
O driver é capaz de lidar com a operação de E/S solicitada sem passar o IRP para baixo na pilha do driver e a operação foi concluída.
O IRP está sendo cancelado. (Consulte Cancelando IRPs.)
Se essas condições não forem atendidas, a rotina de expedição de um driver deverá passar o IRP para o driver mais baixo ou deve lidar com o processamento da solicitação de E/S. Se uma das condições for atendida, o driver deverá chamar IoCompleteRequest.
Se um driver concluir uma solicitação porque o processamento não pode progredir ou se ele concluir uma solicitação manipulando a operação solicitada sem realmente acessar o dispositivo, ele normalmente chama IoCompleteRequest de uma de suas rotinas de expedição. Para obter mais informações, consulte Concluindo IRPs em rotinas de expedição.
Se um driver precisar acessar um dispositivo para atender à solicitação, ele normalmente chama IoCompleteRequest de uma rotina DpcForIsr . Essas rotinas são discutidas extensivamente em Interrupções de Manutenção.