Freigeben über


Architektur einer USB-Geräteemulation

In diesem Artikel wird die Architektur der USB-Geräteemulation (UDE) beschrieben, die das Verhalten eines USB-Hostcontrollers und eines verbundenen Geräts emuliert. Mithilfe von UDE kann eine Nicht-USB-Hardware mit den oberen Ebenen kommunizieren, indem die USB-hostseitigen Treiber in Windows verwendet werden.

UDE-Treiber

Diagramm des UDE-Softwarestapels

In der obigen Abbildung:

  • Der USB-Hubtreiber (Usbhub3.sys) ist ein Kernelmodus-Treiberframework (KMDF). Der Hub-Treiber ist für die Verwaltung von USB-Hubs und deren Ports, die Enumeration und die Erstellung physischer Geräteobjekte (PDOs) von USB-Geräten und anderen Hubs verantwortlich, die möglicherweise an ihre Downstream-Ports angeschlossen sind.
  • Die USB-Hostcontrollererweiterung (Ucx01000.sys) ist eine Abstraktionsebene für den Hubtreiber im Stapel und bietet einen allgemeinen Mechanismus zum Einreihen von Anforderungen in die Warteschlange an den zugrunde liegenden Host-Controller-Treiber.
  • Die UDE-Klassenerweiterung (UdeCx) ruft den UDE-Client-Treiber über vom Client implementierte Rückruffunktionen auf. Die Klassenerweiterung stellt Routinen für Clienttreiber bereit, um UDE-Objekte zu erstellen und zu verwalten.
  • Der UDE-Clienttreiber verwaltet die Hardware und interagiert sowohl mit dem Windows-Treiberframework (WDF) als auch mit UDE-APIs. Der obere Edge kommuniziert mit der Erweiterung der WDF- und der UDE-Klasse mithilfe von USB-Konstrukten. Der untere Edge kommuniziert mit der Hardware über die Hardwareschnittstelle.
  • Benutzerdefinierte Hardware: Beispielsweise kann eine PCI-Hardware emuliert werden, um als USB-Gerät zu funktionieren.

UDE-Geräteknoten

Hier sind die für den UDE-Clienttreiber geladenen Gerätestapel:

Diagramm der UDE-Gerätestapel.