Invio di richieste di I/O a destinazioni di I/O generali

Il driver può inviare richieste di I/O a destinazioni di I/O generali in modo sincrono o asincrono.

Se un driver invia richieste di I/O in modo sincrono, un thread del driver invia le richieste una alla volta. Il thread attende il completamento di ogni richiesta prima di inviarne uno successivo. Questo processo è più semplice rispetto all'invio asincrono delle richieste di I/O. Il driver può inviare richieste di I/O in modo sincrono se non invia molte richieste e se le prestazioni del sistema o del dispositivo non vengono ridotte mentre il driver attende ogni richiesta di I/O.

Se un driver invia richieste di I/O in modo asincrono, un thread driver invia ogni richiesta non appena la richiesta è pronta per l'invio, senza attendere il completamento delle richieste inviate in precedenza. Se il driver deve gestire molte richieste di I/O in breve periodo di tempo, probabilmente non è possibile consentire al driver di attendere il completamento di ogni richiesta prima di inviare la richiesta successiva. In caso contrario, è possibile perdere dati o ridurre le prestazioni dei dispositivi del driver e, eventualmente, dell'intero sistema.

L'oggetto di destinazione I/O del framework fornisce due set di metodi che il driver può chiamare: un set per inviare richieste di I/O in modo sincrono e l'altro set per inviare richieste di I/O in modo asincrono.

Per ognuno di questi metodi, è necessario specificare un oggetto request e uno spazio buffer. È possibile usare questi metodi per inoltrare una richiesta ricevuta dal driver in una delle relative code di I/O o o per creare e inviare una nuova richiesta.