Freigeben über


Verbindungs-IDs für serielle Peripheriegeräte

SerCx2 verwaltet serielle Ports, mit denen Peripheriegeräte dauerhaft verbunden sind. Da diese physischen Verbindungen behoben sind, können sie in der ACPI-Firmware für die Hardwareplattform beschrieben werden. Wenn Sie einen Treiber für ein Peripheriegerät schreiben, das mit einem von SerCx2 verwalteten seriellen Port verbunden ist, enthält die Liste der Hardwareressourcen, die der Treiber empfängt, eine Verbindungs-ID , die die Geräteverbindungsinformationen aus der Plattformfirmware kapselt.

Beim Systemstart listet der PnP-Manager (Plug & Play) sowohl PnP-Geräte als auch Nicht-PnP-Geräte auf. Für ein Nicht-PnP-Peripheriegerät, das über eine feste Verbindung mit einem seriellen Port verfügt, fragt der PnP-Manager die ACPI-Firmware der Hardwareplattform ab, um eine Reihe von Verbindungsparametern abzurufen, die den Zugriff auf das Gerät beschreiben. Diese Verbindungsparameter identifizieren den seriellen Controller für den Port, mit dem das Gerät verbunden ist, und enthalten andere Informationen, z. B. die Baudrate und die Flusssteuerungseinstellungen, die der serielle Controller für die Kommunikation mit dem Gerät benötigt.

Der PnP-Manager weist eine Verbindungs-ID zu, um die Verbindungsparameter für dieses Peripheriegerät darzustellen. Der PnP-Manager speichert diese ID und die Verbindungsparameter zusammen in einem Systemdatenspeicher namens Resource Hub. (Der Ressourcenhub ist ein interner Datenspeicher, in dem der PnP-Manager Konfigurationsinformationen zu einem seriellen Peripheriegerät speichert.) Die Verbindungs-ID kapselt diese Parameter, sodass sie vom Peripherietreiber als undurchsichtig behandelt werden können.

Der Peripherietreiber empfängt die Verbindungs-ID für das serielle Peripheriegerät als Teil der dem Treiber zugewiesenen Hardwareressourcen. Wenn der Peripherietreiber eine Systemfunktion aufruft, um eine Verbindung mit dem Peripheriegerät zu öffnen, gibt der Treiber die Verbindungs-ID an, die die Systemfunktion verwendet, um die Verbindungsparameter des Geräts aus dem Ressourcenhub abzurufen.

Codebeispiele für UMDF- und KMDF-Treiber, die Verbindungs-IDs verwenden, um logische Verbindungen mit seriellen Peripheriegeräten zu öffnen, finden Sie in den folgenden Themen:

Verbinden eines UMDF-Peripherietreibers mit einem seriellen Port

Verbinden eines KMDF-Peripherietreibers mit einem seriellen Port

Ein Client, der eine Verbindung mit einem Peripheriegerät an einem seriellen Port öffnet, hat exklusiven Zugriff auf den Port, bis die Verbindung geschlossen wird. Ein Versuch eines anderen Clients, eine zweite Verbindung mit demselben Port zu öffnen, schlägt fehl.

Unmittelbar nach dem Öffnen eines seriellen Ports sollte ein Client davon ausgehen, dass sich der Port in einem unbekannten oder nicht definierten Zustand befindet. Der Client ist dafür verantwortlich, den Port so zu konfigurieren, dass er einsatzbereit ist.

Um einen seriellen Port für den Betrieb zu konfigurieren, sendet der Client I/O-Steuerungsanforderungen (IOCTL) an den seriellen Controller. In der Regel sendet der Client eine IOCTL_SERIAL_APPLY_DEFAULT_CONFIGURATION-Anforderung an den Controller, um den Port auf die Standardkonfiguration festzulegen. Bei Bedarf kann der Client zusätzliche serielle IOCTLs senden, um eine oder mehrere Standardkonfigurationseinstellungen zu überschreiben. Windows definiert beispielsweise serielle IOCTLs, um die Baudrate, die Flusssteuerungsparameter, die Zeilensteuerungseinstellungen und die Timeoutwerte für Lese- und Schreibanforderungen zu ändern. Eine Liste der seriellen IOCTLs, die von SerCx2 unterstützt werden, finden Sie unter Serielle E/A-Anforderungsschnittstelle.