Root Hub-Rückruffunktionen eines USB-Hostcontrollertreibers
UCX führt die Stammhubverwaltung durch. Es simuliert und verwaltet virtuelle Steuerungs- und Unterbrechungsendpunkte. UCX erstellt diese virtuellen Endpunkte, wenn der Hostcontrollertreiber das Stammhubobjekt erstellt.
Der USB-Hubtreiber interagiert mit dem Stammhub auf die gleiche Weise wie mit einem regulären Hubgerät. Der Hostcontrollertreiber muss jedoch keine Anforderungen verarbeiten, die für die Steuerungsendpunkte direkt an den Stammhub gesendet werden und die Endpunkte unterbrechen. UCX verarbeitet diese Anforderungen. UCX ruft Rückruffunktionen auf, die vom Hostcontrollertreiber implementiert werden, sodass relevante Informationen zum aktuellen Status der Ports des Hostcontrollers zurückgegeben werden können. Wenn diese Rückruffunktionen abgeschlossen sind, werden die zugrunde liegenden UCX-Anforderungen abgeschlossen und an den Hubtreiber zurückgegeben.
Beim Empfang einer Interruptübertragung für den Stammhub legt UCX die Anforderung als ausstehend fest. Wenn eine Änderung an einem der Stammhubports erkannt wird, ruft der Hostcontrollertreiber UcxRootHubPortChanged auf. UCX ruft dann den EVT_UCX_ROOTHUB_INTERRUPT_TX Rückruf des Treibers auf, und der Treiber gibt an, dass der Port geändert wurde. Zu diesem Zeitpunkt schließt UCX die ausstehende Anforderung an den Hubtreiber zurück. Der Hubtreiber sendet eine Steuerungsübertragung an den Stammhub, um den Port status des Ports abzurufen, der eine Änderung signalisiert hat. UCX legt diese Steuerungsübertragungsanforderung auf ausstehend fest und ruft die EVT_UCX_ROOTHUB_CONTROL_URB Rückruffunktion des Treibers auf. In der Implementierung wird der aktuelle status des Root Hub-Ports zurückgegeben, einschließlich der Angabe, dass ein Gerät verbunden ist. UCX schließt die Steuerungsübertragungsanforderung an den Hubtreiber ab, und die Geräteenumeration wird fortgesetzt.