SPB Framework-Erweiterung (SpbCx)

Ab Windows 8 ist die SPB-Frameworkerweiterung (SpbCx) eine vom System bereitgestellte Erweiterung des Kernelmodustreiberframeworks (KMDF). SpbCx arbeitet mit einem SPB-Controllertreiber zusammen, um E/A-Vorgänge auf Peripheriegeräten auszuführen, die mit einem einfachen Peripheriebus (SPB) wie I²C oder SPI verbunden sind.

Der SPB-Controllertreiber führt alle hardwarespezifischen Vorgänge aus. Zu diesen Vorgängen gehört der Zugriff auf die Hardwareregister des SPB-Controllers, um den Controller zu konfigurieren und Busübertragungen an und von SPB-verbundenen Peripheriegeräten zu initiieren.

SpbCx führt Verarbeitungsaufgaben aus, die für SPB-Controllergeräte üblich sind. SpbCx verwaltet insbesondere die E/A-Anforderungswarteschlangen für einen SPB-Controller. Diese Warteschlangen enthalten E/A-Anforderungen für Peripheriegeräte, die an den Bus angeschlossen sind. Der Hardwareanbieter für den SPB-Controller stellt einen SPB-Controllertreiber bereit, um alle hardwarespezifischen Vorgänge auszuführen, die zum Verarbeiten dieser Anforderungen erforderlich sind.

Die Zuständigkeiten zwischen SpbCx und dem SPB-Controllertreiber sind wie folgt aufgeteilt:

  • SpbCx verwaltet die generischen Funktionen, die allen Membern der SPB-Controllergeräteklasse gemeinsam sind. SpbCx bietet einen Großteil der Standardanforderungsbehandlung und -ablaufsteuerung für den Controllertreiber. Ab Windows 8 ist SpbCx eine Posteingangskomponente des Windows-Betriebssystems.

  • Der SPB-Controllertreiber verwaltet die hardwarespezifischen Funktionen im SPB-Controllergerät. Hardwarehersteller stellen Controllertreiber für ihre SPB-Controllergeräte bereit.

SpbCx und der SPB-Controllertreiber werden im Kernelmodus ausgeführt. SpbCx ist eine Frameworkerweiterung, und der SPB-Controllertreiber ist ein KMDF-Treiber. Der SPB-Controllertreiber ruft die Methoden in der SpbCx-Gerätetreiberschnittstelle (DDI) auf, um SPB-spezifische Vorgänge auszuführen, und ruft KMDF-Methoden auf, um andere generischere Treiberfunktionen auszuführen. Informationen zum Erstellen eines KMDF-Treibers finden Sie unter Erstellen und Laden eines Framework-Based-Treibers.

SPB-Controllertreiber verknüpfen statisch mit den DDI-Einstiegspunkten in der SpbCx-Stubbibliothek Spbcx.lib. Zur Laufzeit führt diese Bibliothek die erforderliche Treiberversionsaushandlung aus, um eine dynamische Verknüpfung mit dem Frameworkerweiterungsmodul Spbcx.sys, das den DDI implementiert. Ein SPB-Controllertreiber, der eine bestimmte Version von Spbcx.sys erfordert, kann sicher eine Verbindung mit einer Version von Spbcx.sys herstellen, die eine höhere Versionsnummer aufweist. Dieser Treiber kann jedoch keine Verbindung mit einer Version von Spbcx.sys herstellen, die eine niedrigere Versionsnummer aufweist. Die SpbCx-E/A-Anforderungsschnittstelle ist ähnlich abwärtskompatibel.

Obwohl ein Hardwarehersteller die Möglichkeit hat, einen monolithischen SPB-Controllertreiber zu schreiben, der SpbCx nicht verwendet, ist hierfür ein erheblicher Aufwand erforderlich. Im Vergleich dazu ist ein Controllertreiber, der SpbCx verwendet, einfacher zu entwickeln und in der Regel zuverlässiger.