USB 호스트 컨트롤러 드라이버의 루트 허브 콜백 함수

UCX는 루트 허브 관리를 수행합니다. 가상 제어 및 인터럽트 엔드포인트를 시뮬레이션하고 관리합니다. UCX는 호스트 컨트롤러 드라이버가 루트 허브 개체를 만들 때 이러한 가상 엔드포인트를 만듭니다.

USB 허브 드라이버는 일반 허브 디바이스와 상호 작용하는 것과 동일한 방식으로 루트 허브와 상호 작용합니다. 그러나 호스트 컨트롤러 드라이버는 제어 및 인터럽트 엔드포인트에 대한 루트 허브로 전송된 요청을 직접 처리할 필요가 없습니다. UCX는 이러한 요청을 처리합니다. UCX는 호스트 컨트롤러 드라이버가 구현한 콜백 함수를 호출하여 호스트 컨트롤러 포트의 현재 상태에 대한 관련 정보를 반환할 수 있도록 합니다. 이러한 콜백 함수가 완료되면 기본 UCX 요청이 완료되고 허브 드라이버로 반환됩니다.

루트 허브에 대한 인터럽트 전송을 수신할 때 UCX는 요청을 보류 중으로 설정합니다. 루트 허브 포트 중 하나에서 변경 내용이 감지되면 호스트 컨트롤러 드라이버는 UcxRootHubPortChanged를 호출합니다. 그런 다음 UCX는 드라이버의 EVT_UCX_ROOTHUB_INTERRUPT_TX 콜백을 호출하고 드라이버는 변경된 포트를 나타냅니다. 현재 UCX는 보류 중인 요청을 허브 드라이버로 다시 완료합니다. 허브 드라이버는 변경 신호를 보낸 포트의 포트 상태 가져오기 위해 루트 허브로 제어 전송을 보냅니다. UCX는 전송 요청을 보류 중으로 제어하는 를 설정하고 드라이버의 EVT_UCX_ROOTHUB_CONTROL_URB 콜백 함수를 호출합니다. 구현에서 디바이스가 연결되어 있다는 표시를 포함하여 루트 허브 포트의 현재 상태 반환합니다. UCX는 허브 드라이버에 대한 제어 전송 요청을 완료하고 디바이스 열거를 계속합니다.