Features von SerCx2-Based seriellen Controllertreibern
SerCx2 ist eine Erweiterung des Kernel-Mode Driver Framework (KMDF), die über spezielle Features zur Unterstützung serieller Controllertreiber verfügt. Weitere Informationen zu KMDF finden Sie unter Verwenden von WDF zum Entwickeln eines Treibers Ein SerCx2-basierter serieller Controllertreiber ist ein KMDF-Treiber, der die Methoden und Rückrufe in KMDF zum Ausführen generischer Treibervorgänge verwendet und mit SerCx2 kommuniziert, um Vorgänge auszuführen, die für serielle Controllertreiber spezifisch sind.
In der Regel sind serielle Controller auf Hardwareebene mit 16550 universellen asynchronen Empfänger-/Transmittergeräten (UART) kompatibel. UARTs wurden seit den frühen Tagen des Personal Computing verwendet, um die seriellen Ports an den Gehäusen von Desktop-PCs zu steuern. In jüngster Zeit sind serielle Controller in integrierten SoC-Leitungen (System on a Chip) enthalten, um eine Kommunikation mit niedriger Pinanzahl mit anderen integrierten Leitungen zu ermöglichen. Bei einer SoC-basierten Hardwareplattform ist der "serielle Port", an den ein Client E/A-Anforderungen sendet, einfach eine Reihe von seriellen Schnittstellenpins auf dem SoC-Chip. Weitere Informationen finden Sie unter Übersicht über serielle Controllertreiber.
Microsoft kann den seriellen Controllertreiber für eine Familie von seriellen Controllern mit ähnlichen Hardwarefeatures bereitstellen. Alternativ kann der Hardwareanbieter für einen seriellen Controller mit besonderen Features einen benutzerdefinierten seriellen Controllertreiber bereitstellen, um diese Features zu unterstützen.
Ein serieller Controllertreiber kommuniziert mit SerCx2 über eine Gerätetreiberschnittstelle (Device Driver Interface, DDI). Der SerCx2 DDI umfasst zwei Teile:
- Eine Reihe von Treiberunterstützungsmethoden, die von SerCx2 implementiert und vom seriellen Controllertreiber aufgerufen werden.
- Eine Reihe von Ereignisrückruffunktionen, die vom seriellen Controllertreiber implementiert und von SerCx2 aufgerufen werden.
Ausführliche Beschreibungen der Methoden und Rückrufe in SerCx2 DDI finden Sie unter Version 2 Serial Framework Extension (SerCx2) Reference in den Sercx.h-Headerthemen .
Obwohl ein Hardwarehersteller die Möglichkeit hat, einen eigenständigen seriellen Controllertreiber zu schreiben, ist hierfür ein erheblicher Aufwand erforderlich. Im Vergleich dazu ist die Entwicklung eines seriellen Controllertreibers, der SerCx2 verwendet, einfacher und führt in der Regel zu einem treiber, der viel kleiner und zuverlässiger ist.
SerCx2 verwaltet die folgenden Aufgaben im Auftrag des Controllertreibers:
- Lese- und Schreibvorgänge
- Erkennung des seriellen E/A-Timeouts
- Hardwareereignisse
- System-DMA-Übertragungen (wenn DMA-Systemtransaktionen unterstützt werden)
- Übergänge zu und von Gerätezuständen mit geringer Leistung
- Abbrüche von E/A-Anforderungen (außer bei benutzerdefinierten E/A-Transaktionen)
Zum Verwalten von Lese- und Schreibvorgängen transformiert SerCx2 IRP_MJ_READ - und IRP_MJ_WRITE-Anforderungen von Clients in relativ einfache E/A-Transaktionen, die der serielle Controllertreiber verarbeiten soll. Weitere Informationen finden Sie unter SerCx2-E/A-Transaktionen.
SerCx2 ist in Windows als Komponente namens Sercx2.sys enthalten. Der Serielle Controllertreiber verknüpft statisch mit der SerCx2-Bibliothek Sercxstubs.lib (Version 2.0) und kommuniziert zur Laufzeit mit Sercx2.sys. Der SerCx2 DDI ist in der Headerdatei 2.0\Sercx.h definiert. Sercxstubs.lib und Sercx.h sind im Windows Driver Kit für Windows 8.1 verfügbar.