Condividi tramite


Funzionalità fornite da Storport

Il driver Storport offre le funzionalità seguenti:

  • Indirizzamento

    Microsoft Windows supporta i sistemi che contengono diversi tipi di bus di I/O e/O e/o diversi autobus di I/O dello stesso tipo. È necessario uno schema di indirizzamento comune per gestire questa varietà.

    I dispositivi PCI possono avere sia le risorse di registrazione di I/O che la memoria. Gli indirizzi logici consentono di rendere questa distinzione trasparente al driver di porta.

    Alcuni sistemi contengono HBA connessi a più bus; tale HBA potrebbe richiedere diversi set di traduzioni degli indirizzi.

    Gli indirizzi logici sono necessari per la portabilità tra computer basati su CISC e RISC.

  • Ripetizioni dei tentativi e gestione degli errori

    • I driver della classe di archiviazione non devono implementare algoritmi per ripetere i tentativi di irP quando i dispositivi sono troppo occupati per elaborarli. Il driver Storport implementa questa funzionalità.

    • Il driver di classe imposta un valore di timeout per le richieste e Storport è responsabile dell'applicazione. Tuttavia, il driver Storport può applicare i valori di timeout del conducente della classe in modo flessibile, prendendo in considerazione lo stato del bus. Ad esempio, se un collegamento fibre channel gestito da Storport scende per 20 secondi, Storport potrebbe sospendere il contatore di timeout durante il tempo di arresto, in modo che, ad esempio, le richieste con un timeout di 10 secondi non avranno esito negativo fino a 10 secondi dopo il backup del collegamento. Storport aumenta i valori di timeout assegnati alle richieste in risposta a un aumento del traffico di I/O, perché con traffico di I/O più pesante, i dispositivi richiedono più tempo per completare le richieste.

    • Storport gestisce gli errori di destinazione e occupato dal controller, nonché le condizioni di errore di trasporto (in altre parole, errori correlati alla trasmissione effettiva dei dati nel bus). Ad esempio:

      • errori di parità del bus
      • timeout di selezione
  • Configurazione, accodamento e Gestione dello stato di Power

    • Fornire ai driver di classe informazioni sulle limitazioni dell'adattatore host: è responsabilità del driver di classe regolare le dimensioni dei trasferimenti di dati in base ai limiti delle schede del bus host (HBAs). Storport fornisce tuttavia al driver di classe le informazioni necessarie per eseguire questa attività. Storport fornisce queste informazioni in un descrittore di adapter (STORAGE_ADAPTER_DESCRIPTOR) in risposta a una richiesta IOCTL (IOCTL_STORAGE_QUERY_PROPERTY). Il driver di classe è responsabile dell'interruzione delle richieste in blocchi delle dimensioni appropriate in base alle informazioni segnalate in questo descrittore.

    • Conversione degli indirizzi relativi del bus in indirizzi logici: quando viene eseguita una query, le schede forniscono indirizzi relativi al bus per le porte di I/O, i registri dei comandi e i registri di stato del controllo. Tuttavia, un driver miniport non può usare indirizzi relativi al bus per comunicare con la scheda del bus host (HBA). Storport converte gli indirizzi relativi al bus agli indirizzi logici, in modo che i driver miniport possano accedere agli indirizzi del bus in modo trasparente. per vari motivi:

    • Assicurarsi che un dispositivo e tutti i relativi dispositivi sottostanti siano aggiornati (allo stato di alimentazione del dispositivo D0) prima dell'avvio del dispositivo: quando un dispositivo non è pronto per l'alimentazione, Storport accoda una richiesta D0 per tale dispositivo fino a quando il dispositivo non è pronto.

    • Accodamento di richieste asincrone dai driver di classe e inoltrarli in modo asincrono al dispositivo di destinazione: i driver di classe non devono attendere il completamento di una richiesta prima di inviare la richiesta successiva. Storport presuppone la responsabilità di accodare queste richieste per evitare di sovraccaricare la potenza di elaborazione dell'hardware sottostante.

    • Supporto sia della gestione interna che esterna delle code di richieste di I/O interne: la maggior parte delle operazioni di gestione delle code viene avviata da Storport stesso. Ad esempio, Storport blocca la coda quando si verifica un errore e segnala la condizione di errore al driver di classe, in modo che il driver di classe possa rispondere prima che vengano elaborate ulteriori richieste. Storport risponde tuttavia anche alle richieste del driver di classe o di altri driver di livello superiore per bloccare, sbloccare, bloccare o sbloccare la coda di richiesta interna. I driver di livello superiore possono forzare Storport a liberare la coda interna usando la richiesta di SRB_FUNCTION_RELEASE_QUEUE. Per una spiegazione di ciò che significa "blocca", "blocco" o "sblocco" di una coda, vedere Gestione code Storport.

    • Conversione di errori segnalati dal dispositivo in formato dati di senso SCSI-3 per l'elaborazione da parte del driver di classe.

Storport fornisce servizi al driver miniport tramite le routine della libreria Storport. I writer di driver miniport possono chiamare queste routine anziché codificare le funzionalità fornite in un singolo driver di porta monolitica. Alcuni dei servizi più importanti offerti tramite queste routine sono i seguenti:

  • Un driver miniport Storport può delegare molte operazioni di inizializzazione dipendenti dal sistema operativo alla routine storPortInitialize della libreria StorPort. Ad esempio, il driver Storport gestisce i dettagli correlati al mapping PnP e DMA. Ciò riduce la quantità di lavoro che deve essere eseguita da un driver miniport Storport. Per una spiegazione dei compiti di inizializzazione di un driver miniport Storport, vedere Inizializzazione hardware con Storport.

  • I driver miniport Storport per i dispositivi non PnP vengono risparmiati dall'attività di individuazione delle schede e la segnalazione delle risorse al gestore PnP. Questa operazione viene eseguita in StorPortInitialize.

  • I driver miniport Storport non inizializzano i punti di ingresso di invio nell'oggetto driver. Il driver Storport esegue questa operazione per conto del driver miniport quando il driver miniport chiama StorPortInitialize.

  • I driver miniport storport non convertono gli indirizzi relativi al bus in indirizzi logici usando HalTranslateBusAddress. I driver miniport Storport eseguono questa operazione tramite una chiamata a StorPortGetDeviceBase.

Per un elenco completo delle routine di libreria che Storport rende disponibili per i driver miniport Storport, vedere Routine di supporto del driver Storport.