Suporte a E/S assíncrona
O gerenciador de E/S fornece suporte assíncrono de E/S para que o originador de uma solicitação de E/S (geralmente um aplicativo de modo de usuário, mas às vezes outro driver) possa continuar em execução, em vez de aguardar a conclusão da solicitação de E/S. O suporte a E/S assíncrona melhora a taxa de transferência geral do sistema e o desempenho de qualquer código que faça uma solicitação de E/S.
Com o suporte de E/S assíncrona, os drivers de modo kernel não necessariamente processam solicitações de E/S na mesma ordem em que foram enviados ao gerente de E/S. O gerente de E/S ou um driver de nível superior pode reordenar solicitações de E/S conforme elas são recebidas. Um driver pode dividir uma solicitação de transferência de dados grande em solicitações de transferência menores. Além disso, um driver pode sobrepor o processamento de solicitações de E/S, especialmente em uma plataforma multiprocessador simétrica, conforme mencionado em Multiprocessor-Safe.
Além disso, o processamento de um driver de modo kernel de uma solicitação de E/S individual não é necessariamente serializado. Ou seja, um driver não processa necessariamente cada IRP até a conclusão antes de começar a processar a próxima solicitação de E/S de entrada.
Quando um driver recebe um IRP, ele responde realizando o máximo de processamento específico de IRP possível. Se o driver der suporte ao processamento de IRP assíncrono, ele poderá enviar um IRP para o próximo driver, se necessário, e começar a processar o próximo IRP sem esperar que o primeiro seja concluído. O driver pode registrar uma "rotina de conclusão", que o gerente de E/S chama quando outro driver termina de processar um IRP. Os drivers fornecem um valor status no bloco de status de E/S do IRP, que outros drivers podem acessar para determinar o status de uma solicitação de E/S.
Os drivers podem manter informações de estado sobre suas operações de E/S atuais em uma parte especial de seus objetos de dispositivo, chamada de extensão de dispositivo.
Para obter mais informações, consulte Manipulando IRPs e técnicas de entrada/saída.