Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un controller SPB è un dispositivo che controlla un semplice bus periferico (SPB) e che trasferisce i dati da e verso i dispositivi periferici connessi al 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 di hardware del dispositivo controller SPB fornisce un driver per il 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 di driver generiche.
Ad esempio, un driver del controller SPB chiama in genere il metodo WdfDeviceInitSetPnpPowerEventCallbacks in KMDF per registrarsi 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 del driver di dispositivo SpbCx (DDI).
SpbCx collabora con il driver del 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.
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 User-Mode Driver Framework (UMDF). 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 i dispositivi periferici connessi al spb. Per un SPB, ad esempio io2C, 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 serialmente ai registri dei dispositivi periferici 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 termina 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 dati da o verso un dispositivo periferico connesso a SPB, l'applicazione deve basarsi sul driver del dispositivo periferica SPB per inviare le richieste di lettura o scrittura corrispondenti al controller SPB.