USB ホスト コントローラー ドライバー用のルート ハブ コールバック関数

UCX はルート ハブ管理を実行します。 仮想制御と割り込みエンドポイントをシミュレートおよび管理します。 UCX は、ホスト コントローラー ドライバーがルート ハブ オブジェクトを作成するときに、これらの仮想エンドポイントを作成します。

USB ハブ ドライバーは、通常のハブ デバイスと対話するのと同じ方法でルート ハブとやり取りします。 ただし、ホスト コントローラー ドライバーは、制御と割り込みエンドポイントのルート ハブに送信された要求を直接処理する必要はありません。 UCX はこれらの要求を処理します。 UCX は、ホスト コントローラー ドライバーによって実装されたコールバック関数を呼び出して、ホスト コントローラーのポートの現在の状態に関する関連情報を返すことができます。 これらのコールバック関数が完了すると、基になる UCX 要求が完了し、ハブ ドライバーに返されます。

ルート ハブの割り込み転送を受信すると、UCX は要求を保留中として設定します。 いずれかのルート ハブ ポートで変更が検出されると、ホスト コントローラー ドライバーは UcxRootHubPortChanged を呼び出します。 次に、UCX はドライバーの EVT_UCX_ROOTHUB_INTERRUPT_TX コールバックを呼び出し、ドライバーは変更されたポートを示します。 現時点では、UCX は保留中の要求をハブ ドライバーに戻します。 ハブ ドライバーは、変更を通知したポートのポートの状態を取得するために、ルート ハブに制御転送を送信します。 UCX は、転送要求を保留中に制御し、ドライバーの EVT_UCX_ROOTHUB_CONTROL_URB コールバック関数を呼び出します。 実装では、デバイスが接続されていることを示すルート ハブ ポートの現在の状態を返します。 UCX は、ハブ ドライバーへの制御転送要求を完了し、デバイスの列挙が続行されます。