SPB-Frameworkerweiterung (SpbCx)
Die SPB-Frameworkerweiterung (SpbCx) ist eine vom System bereitgestellte Erweiterung für das Kernelmodus-Treiberframework (KMDF). SpbCx arbeitet mit einem SPB-Controllertreiber zusammen, um E/A-Vorgänge auf Peripheriegeräten auszuführen, die mit einem einfachen Peripheriebus (SPB) verbunden sind, z. B. I2C oder SPI.
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 zu und von an SPB angeschlossenen Peripheriegeräten zu initiieren.
SpbCx führt Verarbeitungsaufgaben aus, die für SPB-Controllergeräte üblich sind. Insbesondere verwaltet SpbCx 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-Controller-Treiber bereit, um alle hardwarespezifischen Vorgänge auszuführen, die für die Verarbeitung dieser Anforderungen erforderlich sind.
Die Aufteilung der Zuständigkeiten zwischen SpbCx und dem SPB-Controllertreiber lautet wie folgt:
SpbCx verwaltet die generischen Funktionen, die für alle Mitglieder der SPB-Controllergeräteklasse identisch sind. SpbCx stellt einen Großteil der standardmäßigen Anforderungsverarbeitung und Flowsteuerung für den Controller-Treiber bereit. Ab Windows 8 ist SpbCx eine Posteingangskomponente des Windows-Betriebssystems.
Der SPB-Controllertreiber verwaltet die hardwarespezifischen Funktionen im SPB-Controllergerät. Hardwareanbieter liefern Controllertreiber für ihre SPB-Controllergeräte.
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 generische Treiberfunktionen auszuführen. Informationen zum Erstellen eines KMDF-Treibers finden Sie unter Erstellen und Laden eines frameworkbasierten Treibers.
SPB-Controllertreiber verknüpfen sich statisch mit den DDI-Einstiegspunkten in der SpbCx-Stub-Bibliothek Spbcx.lib. Zur Laufzeit führt diese Bibliothek die erforderliche Treiberversionsaushandlung durch, um eine dynamische Verknüpfung mit dem Framework-Erweiterungsmodul Spbcx.sys herzustellen, das das DDI implementiert. Ein SPB-Controllertreiber, der eine bestimmte Version von Spbcx.sys erfordert, kann problemlos eine Verknüpfung zu einer Version von Spbcx.sys mit einer höheren Versionsnummer herstellen. Dieser Treiber kann jedoch keine Verknüpfung mit einer Version von Spbcx.sys herstellen, die eine niedrigere Versionsnummer aufweist. Die SpbCx-E/A-Anforderungsschnittstelle ist ähnlich abwärtskompatibel.
Obwohl ein Hardwareanbieter 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.