Condividi tramite


Packet-Driven I/O con I/O riutilizzabili

Gestione I/O, Plug and Play manager e power manager usano pacchetti di richiesta I/O (IRP) per comunicare con i driver in modalità kernel e consentire ai driver di comunicare tra loro.

Il gestore I/O esegue la procedura seguente:

  • Accetta richieste di I/O, che in genere provengono da applicazioni in modalità utente.

  • Crea i provider di integrazione per rappresentare le richieste di I/O.

  • Instrada gli IRP ai driver appropriati.

  • Tiene traccia degli IRP fino a quando non vengono completati.

  • Restituisce lo stato al richiedente originale di ogni operazione di I/O.

Un'IRP potrebbe essere instradata a più di un driver. Ad esempio, una richiesta di apertura di un file in un disco potrebbe passare prima a un driver del file system, tramite un driver mirror intermedio e infine a un driver del disco e, eventualmente, a un driver del bus hardware PnP. Questo set di driver è noto come stack di driver.

Pertanto, ogni IRP ha una parte fissa, più una posizione dello stack I/O specifico del driver per ogni driver che controlla il dispositivo:

  • Nella parte fissa (o intestazione), gestione I/O mantiene informazioni sulla richiesta originale, ad esempio l'ID e i parametri del chiamante, l'indirizzo dell'oggetto dispositivo in cui un file è aperto e così via. La parte fissa contiene anche un blocco di stato di I/O, in cui i driver impostano informazioni sullo stato dell'operazione di I/O richiesta.

  • Nella posizione dello stack I/O del driver di livello più alto, gestione I/O, gestione Plug and Play o power manager imposta parametri specifici del driver, ad esempio il codice della funzione dell'operazione richiesta e il contesto usato dal driver corrispondente per determinare le operazioni da eseguire. A sua volta, ogni driver configura la posizione dello stack di I/O del driver inferiore successivo nello stack di driver.

Poiché ogni driver elabora un'IRP, può accedere alla posizione dello stack I/O nell'IRP, riutilizzando così l'IRP in ogni fase delle operazioni del driver. Inoltre, i driver di livello superiore possono creare (o riutilizzare) IRP per inviare richieste fino a driver di livello ancora inferiore.

Per una descrizione dettagliata dei provider di servizi di integrazione, vedere Gestione dei provider di servizi di integrazione.