Rothubbens återanropsfunktioner för en USB-värdstyrenhetsdrivrutin

UCX utför rothubbhantering. Den simulerar och hanterar virtuella kontroll- och avbrottsslutpunkter. UCX skapar de virtuella slutpunkterna när värdstyrenhetsdrivrutinen skapar rothubbens objekt.

USB-hubbens drivrutin interagerar med rothubben på samma sätt som den interagerar med en vanlig hubbenhet. Värdstyrenhetsdrivrutinen behöver dock inte hantera begäranden som skickas till rothubben för kontrollen och avbryta slutpunkterna direkt. UCX hanterar dessa begäranden. UCX anropar återanropsfunktioner som implementeras av värdstyrenhetsdrivrutinen så att den kan returnera relevant information om det aktuella tillståndet för värdstyrenhetens portar. När dessa återanropsfunktioner är färdiga, behandlas de underliggande UCX-begärandena och returneras till hubbdrivrutinen.

Vid mottagandet av en avbrottsöverföring för rothubben anger UCX begäran som väntande. När en ändring identifieras på en av rothubbens portar anropar värdstyrenhetsdrivrutinen UcxRootHubPortChanged. UCX anropar sedan förarens EVT_UCX_ROOTHUB_INTERRUPT_TX återanrop, och drivrutinen anger att porten har ändrats. För närvarande slutför UCX den väntande begäran tillbaka till hubbdrivrutinen. Hubbdrivrutinen skickar en kontrollöverföring till rothubben för att hämta portstatusen för porten som signalerade en ändring. UCX ställer in den kontrollöverföringsbegäran till väntande och anropar drivrutinens EVT_UCX_ROOTHUB_CONTROL_URB återanropsfunktion. I implementeringen returneras den aktuella statusen för rothubbens port, inklusive indikeringen att en enhet är ansluten. UCX slutför kontrollöverföringsbegäran till hubbdrivrutinen och enhetsuppräkning fortsätter.