Richiesta di I/O di esempio - Panoramica
La figura seguente illustra una panoramica di cosa accade quando un sottosistema apre un oggetto file che rappresenta un file di dati per conto di un'applicazione.
Il sottosistema chiama un servizio di sistema di I/O per aprire un file denominato.
Il gestore di I/O chiama gestione oggetti per cercare il file denominato e per risolvere eventuali collegamenti simbolici per l'oggetto file. Chiama anche il monitoraggio dei riferimenti di sicurezza per verificare che il sottosistema disponga dei diritti di accesso corretti per aprire tale oggetto file.
Se il volume non è ancora montato, il gestore di I/O sospende temporaneamente la richiesta aperta e chiama uno o più file system finché uno di essi riconosce l'oggetto file come qualcosa archiviato in uno dei dispositivi di archiviazione di massa utilizzati dal file system. Quando il file system ha montato il volume, il gestore di I/O riprende la richiesta.
Il gestore di I/O alloca la memoria per e inizializza un IRP per la richiesta aperta. Per i driver, un oggetto open equivale a una richiesta di "creazione".
Il gestore di I/O chiama il driver del file system, passandolo all'IRP. Il driver del file system accede al percorso dello stack di I/O in IRP per determinare l'operazione che deve eseguire, controlla i parametri, determina se il file richiesto è nella cache e, in caso contrario, configura il percorso dello stack I/O del driver inferiore successivo in IRP.
Entrambi i driver elaborano l'IRP e completano l'operazione di I/O richiesta, chiamando le routine di supporto in modalità kernel fornite dal gestore di I/O e da altri componenti di sistema (non illustrati nella figura precedente).
I driver restituiscono l'IRP al gestore di I/O con il blocco di stato di I/O impostato in IRP per indicare se l'operazione richiesta è riuscita o perché non è riuscita.
Il gestore di I/O ottiene lo stato di I/O da IRP, in modo che possa restituire informazioni sullo stato tramite il sottosistema protetto al chiamante originale.
Il gestore di I/O libera l'IRP completato.
La gestione di I/O restituisce un handle per l'oggetto file nel sottosistema se l'operazione di apertura ha avuto esito positivo. Se si è verificato un errore, restituisce lo stato appropriato al sottosistema.
Dopo che un sottosistema apre correttamente un oggetto file che rappresenta un file di dati, un dispositivo o un volume, il sottosistema usa l'handle restituito per identificare l'oggetto file nelle richieste successive per le operazioni di I/O del dispositivo (in genere le richieste di lettura, scrittura o controllo di I/O del dispositivo). Per effettuare una richiesta di questo tipo, il sottosistema chiama i servizi di sistema di I/O. Il gestore di I/O instrada queste richieste come provider di integrazione inviate ai driver appropriati.