Condividi tramite


Panoramica dei driver del controller SPB

Un controller SPB è un dispositivo che controlla un semplice bus periferico (SPB) e che trasferisce i dati da e verso i dispositivi periferici connessi allo SPB. Il fornitore di hardware per un controller SPB fornisce un driver controller SPB per gestire le funzioni hardware nel controller.

A partire da Windows 8, l'estensione spb framework (SpbCx) semplifica lo sviluppo di driver controller per semplici bus periferici (SPB). SpbCx è un'estensione fornita dal sistema per Kernel-Mode Driver Framework (KMDF). Il fornitore dell'hardware per il dispositivo controller SPB fornisce un driver controller per eseguire tutte le operazioni del driver specifiche dell'hardware. Questo driver comunica con SpbCx per eseguire operazioni specifiche dei controller SPB e comunica direttamente con KMDF per eseguire operazioni generiche sui driver.

Ad esempio, un driver del controller SPB chiama in genere il metodo WdfDeviceInitSetPnpPowerEventCallbacks in KMDF per la registrazione per ricevere i callback degli eventi di alimentazione e chiama il metodo WdfInterruptCreate per connettere la routine del servizio interrupt del driver (ISR) all'interrupt dal controller SPB. Per eseguire operazioni specifiche di SPB, il controller SPB comunica con SpbCx tramite l'interfaccia DDI ( Device Driver Interface) SpbCx .

SpbCx collabora con il driver controller SBP per gestire le richieste di I/O per i dispositivi periferici connessi al spb. SpbCx esegue attività di elaborazione comuni ai driver del controller SPB. Queste attività includono la gestione delle code delle richieste di I/O per il controller SPB. Queste code contengono richieste di I/O dai driver che gestiscono i dispositivi periferici connessi al bus. Il driver del controller SPB esegue tutte le operazioni specifiche dell'hardware necessarie per gestire queste richieste.

Il diagramma seguente illustra il driver del controller SPB e SpbCx.

diagramma a blocchi dei componenti spb.

Il driver del controller SPB e SpbCx vengono entrambi eseguiti in modalità kernel e comunicano tra loro tramite SpbCx DDI. Il driver del controller SPB chiama i metodi di supporto dei driver implementati da SpbCx. SpbCx chiama le funzioni di callback degli eventi implementate dal driver del controller SPB.

I driver che inviano richieste di I/O al controller SPB sono driver in modalità kernel che usano Kernel-Mode Driver Framework (KMDF) o driver in modalità utente che usano UMDF ( User-Mode Driver Framework ). Questi driver possono inviare richieste di lettura e scrittura per trasferire i dati da e verso dispositivi periferici connessi a SPB. Inoltre, i driver possono inviare richieste di controllo I/O (IOCTL) per eseguire operazioni specifiche di SPB.

Il driver del controller SPB accede direttamente ai registri hardware del dispositivo controller SPB per avviare i trasferimenti di dati da e verso dispositivi periferici connessi al provider di servizi di backup. Per un SPB, ad esempio I2C, questi trasferimenti di dati si verificano a velocità relativamente lente. Anche se è probabile che i registri hardware del controller SPB siano mappati alla memoria, è necessario accedere ai registri dei dispositivi periferici in modo seriale tramite spb.

In risposta a una richiesta di I/O per trasferire i dati da o verso un dispositivo periferico connesso a SPB, il driver del controller SPB avvia il trasferimento del bus, contrassegna la richiesta di I/O come in sospeso e restituisce senza attendere il completamento del trasferimento. Successivamente, quando l'hardware del controller SPB completa il trasferimento, il controller segnala un interrupt e l'ISR nel driver del controller SPB completa la richiesta di I/O in sospeso o avvia il trasferimento successivo nell'operazione di I/O richiesta.

Solo i driver possono inviare richieste di I/O direttamente a un controller SPB. Quando un'applicazione in modalità utente trasferisce i dati da o verso un dispositivo periferico connesso a SPB, l'applicazione deve basarsi sul driver di periferica SPB per inviare le richieste di lettura o scrittura corrispondenti al controller SPB.