Enviando solicitações de E/S para destinos gerais de E/S

Seu driver pode enviar solicitações de E/S para destinos gerais de E/S de forma síncrona ou assíncrona.

Se um driver enviar solicitações de E/S de forma síncrona, um thread de driver enviará as solicitações uma de cada vez. O thread aguarda a conclusão de cada solicitação antes de enviar a próxima. Esse processo é mais simples do que enviar as solicitações de E/S de forma assíncrona. Seu driver poderá enviar solicitações de E/S de forma síncrona se não enviar muitas solicitações e se o desempenho do sistema ou do dispositivo não for reduzido enquanto o driver aguarda cada solicitação de E/S.

Se um driver enviar solicitações de E/S de forma assíncrona, um thread de driver enviará cada solicitação assim que a solicitação estiver pronta para ser enviada, sem aguardar a conclusão das solicitações enviadas anteriormente. Se o driver precisar lidar com muitas solicitações de E/S em curtos períodos de tempo, você provavelmente não poderá permitir que o driver aguarde a conclusão de cada solicitação antes de enviar a próxima solicitação. Caso contrário, você poderá perder dados ou reduzir o desempenho dos dispositivos do driver e, possivelmente, de todo o sistema.

O objeto de destino de E/S da estrutura fornece dois conjuntos de métodos que o driver pode chamar: um conjunto para enviar solicitações de E/S de forma síncrona e o outro definido para enviar solicitações de E/S de forma assíncrona.

Para cada um desses métodos, você deve fornecer um objeto de solicitação e algum espaço em buffer. Você pode usar esses métodos para encaminhar uma solicitação que o driver recebeu em uma de suas filas de E/S ou para criar e enviar uma nova solicitação.