Routine DispatchRead, DispatchWrite e DispatchReadWrite
Le routine DispatchRead e DispatchWrite di un driver gestiscono gli INDIRIZZI IP con codici di funzione I/O di IRP_MJ_READ e IRP_MJ_WRITE rispettivamente. In alternativa, una routine DispatchReadWrite combinata può gestire i provider di accesso per entrambi i codici di funzione di I/O.
Ogni driver di un dispositivo da cui è possibile trasferire i dati nel sistema deve avere una routine DispatchRead . Ogni driver di un dispositivo a cui è possibile trasferire i dati dal sistema deve avere una routine DispatchWrite . Qualsiasi driver che trasferisce dati in entrambe le direzioni può avere una routine dispatchReadWrite combinata.
I driver di livello inferiore gestiscono IRP_MJ_READe IRP_MJ_WRITE richieste in modo asincrono. Pertanto, le routine DispatchRead e/o DispatchWrite nei driver di livello più alto devono passare queste richieste per un'ulteriore elaborazione, purché la richiesta disponga di parametri validi nella posizione dello stack I/O del driver dell'IRP.
Se un driver configura gli oggetti del dispositivo per l'I/O con buffer o diretto influisce sul modo in cui gestisce le richieste di trasferimento. In particolare, un driver che usa operazioni di I/O dirette per eseguire operazioni DMA potrebbe dover suddividere le richieste di trasferimento di grandi dimensioni in una sequenza di operazioni di trasferimento più piccole per soddisfare una richiesta di IRP_MJ_READ o IRP_MJ_WRITE . Per altre informazioni, vedere Tecniche di input/output.
Le sottosezioni seguenti illustrano alcune considerazioni sulla progettazione e sull'implementazione per le routine DispatchReadWrite nei driver di dispositivo di livello più basso che usano I/O con buffer e I/O diretto, nonché nei driver di livello superiore livelli sopra di essi:
Gestione dei trasferimenti in modo asincrono
DispatchReadWrite usando l'I/O con buffer
DispatchReadWrite con I/O diretto