Enviando solicitações de e/s para destinos de e/s gerais

O driver pode enviar solicitações de e/s para destinos de e/s gerais 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 que cada solicitação seja concluída antes de enviar a próxima. Esse processo é mais simples do que enviar as solicitações de e/s de forma assíncrona. O driver pode enviar solicitações de e/s de forma síncrona se ele 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 esperar que as solicitações enviadas anteriormente sejam concluídas. 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ê pode perder dados ou reduzir o desempenho dos dispositivos de seu driver e, possivelmente, de todo o sistema.

O objeto de destino de e/s da estrutura fornece dois conjuntos de métodos que seu 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 maneira assíncrona.

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