Arkitektur för USB-enhetsemulering

Den här artikeln beskriver arkitekturen för USB-enhetsemulering (UDE), som emulerar beteendet hos en USB-värdstyrenhet och en ansluten enhet. Med UDE kan en icke-USB-maskinvara kommunicera med de övre lagren med hjälp av USB-drivrutinerna på värdsidan i Windows.

UDE-drivrutiner

Diagram över UDE-programvarustacken.

I föregående bild,

  • USB-hubbdrivrutinen (Usbhub3.sys) är ett ramverk för drivrutiner för kernelläge (KMDF). Hubbdrivrutinen ansvarar för att hantera USB-hubbar och deras portar, uppräkning och skapande av fysiska enhetsobjekt (PDOs) för USB-enheter och andra hubbar som kan vara anslutna till deras underordnade portar.
  • USB-värdstyrenhetstillägget (Ucx01000.sys) är ett abstraktionslager till hubbdrivrutinen i stacken och ger en allmän mekanism för köbegäranden till den underliggande drivrutinen för värdstyrenheten.
  • UDE-klasstillägget (UdeCx) utför anrop till UDE-klientdrivrutinen via återanropsfunktioner som implementerats av klienten. Klasstillägget innehåller rutiner för klientdrivrutiner för att skapa UDE-objekt och hantera dem.
  • UDE-klientdrivrutinen hanterar maskinvaran och interagerar med både Windows-drivrutinsramverket (WDF) och UDE-API:er. Den övre kanten kommunicerar med både WDF- och UDE-klasstillägget med hjälp av USB-baserade strukturer. Dess nedre kant kommunicerar med maskinvaran med hjälp av maskinvarans gränssnitt.
  • Anpassad maskinvara: Till exempel kan en PCI-maskinvara emuleras till att fungera som en USB-enhet.

UDE-enhetsnoder

Här är enhetsstackarna som har lästs in för klientdrivrutinen UDE:

Diagram över UDE-enhetsstackar.