Estensione SPB Framework (SpbCx)

A partire da Windows 8, l'estensione del framework SPB (SpbCx) è un'estensione fornita dal sistema a Kernel-Mode Driver Framework (KMDF). SpbCx funziona insieme a un driver del controller SPB per eseguire operazioni di I/O su dispositivi periferici connessi a un semplice bus periferico (SPB), ad esempio I²C o SPI.

Il driver del controller SPB esegue tutte le operazioni specifiche dell'hardware. Queste operazioni includono l'accesso ai registri hardware del controller SPB per configurare il controller e per avviare i trasferimenti del bus verso e dai dispositivi periferici connessi con SPB.

SpbCx esegue attività di elaborazione comuni ai dispositivi controller SPB. In particolare, SpbCx gestisce le code di richiesta di I/O per un controller SPB. Queste code contengono richieste di I/O per i dispositivi periferici collegati al bus. Il fornitore hardware per il controller SPB fornisce un driver del controller SPB per eseguire tutte le operazioni specifiche dell'hardware necessarie per gestire queste richieste.

La divisione delle responsabilità tra SpbCx e il driver del controller SPB è la seguente:

  • SpbCx gestisce le funzioni generiche comuni a tutti i membri della classe di dispositivo del controller SPB. SpbCx offre gran parte della gestione delle richieste predefinita e del controllo del flusso per il driver del controller. A partire da Windows 8, SpbCx è un componente della posta in arrivo del sistema operativo Windows.

  • Il driver del controller SPB gestisce le funzioni specifiche dell'hardware nel dispositivo controller SPB. I fornitori di hardware forniscono driver controller per i dispositivi controller SPB.

SpbCx e il driver del controller SPB vengono eseguiti in modalità kernel. SpbCx è un'estensione del framework e il driver del controller SPB è un driver KMDF. Il driver del controller SPB chiama i metodi nell'interfaccia del driver del dispositivo SpbX (DDI) per eseguire operazioni specifiche di SPB e chiama i metodi KMDF per eseguire altre funzioni driver più generiche. Per informazioni sulla creazione di un driver kmDF, vedere Compilazione e caricamento di un driver Framework-Based.

I driver del controller SPB si collegano staticamente ai punti di ingresso DDI nella libreria stub SpbCx, Spbcx.lib. In fase di esecuzione, questa libreria esegue la negoziazione della versione del driver necessaria per collegare dinamicamente al modulo di estensione del framework, Spbcx.sys, che implementa l'DDI. Un driver del controller SPB che richiede una versione specifica di Spbcx.sys può collegarsi in modo sicuro a una versione di Spbcx.sys con un numero di versione superiore. Tuttavia, questo driver non può collegarsi a una versione di Spbcx.sys con un numero di versione inferiore. L'interfaccia richiesta spbCx I/O è analogamente compatibile con le versioni precedenti.

Anche se un fornitore di hardware ha la possibilità di scrivere un driver controller SPB monolitico che non usa SpbCx, è necessario uno sforzo significativo per farlo. Per confronto, un driver controller che usa SpbCx è più facile da sviluppare ed è in genere più affidabile.