Routine di dispatch del driver della classe di archiviazione

I driver di classe DRIVER_DISPATCH e le routine DispatchClose in genere non hanno requisiti specifici del dispositivo. La maggior parte dei driver di classe di archiviazione sono driver intermedi; le routine di invio restituiscono solo STATUS_SUCCESS per indicare che esiste un determinato oggetto dispositivo in modo che i driver di livello superiore e, indirettamente, le applicazioni in modalità utente possano aprire il dispositivo per I/O e chiudere il dispositivo in un secondo momento.

Le routine DispatchDeviceControl e DispatchInternalDeviceControl del driver di classe devono essere residenti; cioè, non possono essere paginabili né parte della sezione immagine paginabile di un driver. A seconda dell'IOCTL di una determinata richiesta, tale routine dispatch potrebbe chiamare una routine di paging o attendere una chiamata da un oggetto di sincronizzazione o notifica (bloccando così il thread in esecuzione), ma la routine dispatch deve essere in grado di passare un IOCTL sconosciuto a DISPATCH_LEVEL.

Un driver di classe di archiviazione deve avere una routine DispatchPnP per le richieste di avvio, arresto e rimozione del dispositivo e rispondere ad altre richieste PnP, ad esempio la notifica che il dispositivo si trova nel percorso di paging. Per informazioni dettagliate sulla gestione di una richiesta di avvio PnP, vedere Gestione dell'avvio PnP in un driver di classe di archiviazione. Per informazioni dettagliate sulla gestione di altre richieste PnP, vedere Gestione delle richieste PnP alle periferiche di archiviazione.

Un driver di classe di archiviazione deve avere anche una routine DispatchPower per le richieste di impostare lo stato di alimentazione del dispositivo. Per informazioni dettagliate, vedere Gestione delle richieste di alimentazione alle periferiche di archiviazione.

Un driver di classe di archiviazione deve avere una routine DispatchShutdown ed eventualmente una routine DispatchFlushBuffers se il dispositivo memorizza i dati nella cache internamente, se il dispositivo potrebbe essere collegato a un bus guidato da un HBA che memorizza i dati nella cache internamente o se un file system è a livelli sopra il driver di classe. Per mantenere l'integrità dei dati, tale cache deve essere scaricata nel dispositivo prima che il sistema venga arrestato.

Consulta anche Scrivere routine di dispatch per ulteriori informazioni sui requisiti generali delle routine di dispatch.