Share via


Funzioni di callback dell'hub radice di un driver del controller host USB

UCX esegue la gestione dell'hub radice. Simula e gestisce i controlli virtuali e gli endpoint di interruzione. UCX crea tali endpoint virtuali quando il driver del controller host crea l'oggetto hub radice.

Il driver dell'hub USB interagisce con l'hub radice nello stesso modo in cui interagisce con un normale dispositivo hub. Tuttavia, il driver del controller host non deve gestire direttamente le richieste inviate all'hub radice per il controllo e interrompere gli endpoint. UCX gestisce tali richieste. UCX richiama le funzioni di callback implementate dal driver del controller host in modo che possa restituire informazioni pertinenti sullo stato corrente delle porte del controller host. Al termine di queste funzioni di callback, le richieste UCX sottostanti vengono completate e restituite al driver hub.

Durante la ricezione di un trasferimento di interruzione per l'hub radice, UCX imposta la richiesta come in sospeso. Quando viene rilevata una modifica in una delle porte dell'hub radice, il driver del controller host chiama UcxRootHubPortChanged. UCX richiama quindi il callback del driver EVT_UCX_ROOTHUB_INTERRUPT_TX e il driver indica che la porta modificata. A questo punto, UCX completa la richiesta in sospeso al driver dell'hub. Il driver dell'hub invia un trasferimento del controllo all'hub radice per ottenere lo stato della porta che ha segnalato una modifica. UCX imposta la richiesta di trasferimento in sospeso e richiama la funzione di callback del driver EVT_UCX_ROOTHUB_CONTROL_URB. Nell'implementazione restituisce lo stato corrente della porta dell'hub radice, inclusa l'indicazione che un dispositivo è connesso. UCX completa la richiesta di trasferimento del controllo al driver dell'hub e l'enumerazione del dispositivo continua.