次の方法で共有


EVT_UCX_ROOTHUB_GET_INFO コールバック関数 (ucxroothub.h)

ルート ハブに関する情報の要求を受信したときに UCX が呼び出すクライアント ドライバーの実装。

構文

EVT_UCX_ROOTHUB_GET_INFO EvtUcxRoothubGetInfo;

void EvtUcxRoothubGetInfo(
  [in] UCXROOTHUB UcxRootHub,
  [in] WDFREQUEST Request
)
{...}

パラメーター

[in] UcxRootHub

ルート ハブを表す UCX オブジェクトへのハンドル。

[in] Request

ROOTHUB_INFO型の構造体。

戻り値

なし

解説

UCX クライアント ドライバーは、 UcxRootHubCreate メソッドを呼び出すことによって、USB ホスト コントローラー拡張機能 (UCX) にこのコールバック関数を登録します。

_ROOTHUB_INFO構造体には、ルート ハブでサポートされている USB 2.0 ポートと USB 3.0 ポートの数が含まれています。

UCX が EVT_UCX_ROOTHUB_GET_INFO 関数を呼び出した後、ルート ハブによって公開されるポートの数は同じままであることが保証されます。 これらは仮想ポートであり、物理ポートではないことに注意してください。 各物理 USB コネクタは、ルート ハブ上の速度が異なる 1 つ以上のポートで表されます。

クライアント ドライバーは 、要求で完了状態を返します。 ドライバーは、WDFREQUEST を非同期的に完了できます。

VOID
RootHub_EvtRootHubGetInfo(
    UCXROOTHUB         UcxRootHub,
    WDFREQUEST         Request
)
/*++

    For sample demonstration purposes, this function returns statically
    defined information for the root hub.

--*/
{
    PUCX_ROOTHUB_CONTEXT    ucxRootHubContext;
    WDF_REQUEST_PARAMETERS  wdfRequestParams;
    PROOTHUB_INFO           rootHubInfo;
    NTSTATUS                status;

    ucxRootHubContext = GetUcxRootHubContext(UcxRootHub);

    WDF_REQUEST_PARAMETERS_INIT(&wdfRequestParams);
    WdfRequestGetParameters(Request, &wdfRequestParams);

    rootHubInfo = (PROOTHUB_INFO)wdfRequestParams.Parameters.Others.Arg1;

    if (rootHubInfo->Size < sizeof(ROOTHUB_INFO)) {
        DbgTrace(TL_ERROR, RootHub, "Invalid ROOTHUB_INFO Size %d", rootHubInfo->Size);
        status = STATUS_INVALID_PARAMETER;
        goto RootHub_EvtRootHubGetInfo;
    }

    rootHubInfo->ControllerType = ControllerTypeSoftXhci;
    rootHubInfo->NumberOf20Ports = ucxRootHubContext->NumberOf20Ports;
    rootHubInfo->NumberOf30Ports = ucxRootHubContext->NumberOf30Ports;
    rootHubInfo->MaxU1ExitLatency = ucxRootHubContext->U1DeviceExitLatency;
    rootHubInfo->MaxU2ExitLatency = ucxRootHubContext->U2DeviceExitLatency;

    DbgTrace(TL_INFO, RootHub, "RootHub_UcxEvtGetInfo NumberOf20Ports %d NumberOf30Ports %d", rootHubInfo->NumberOf20Ports, rootHubInfo->NumberOf30Ports);

    status = STATUS_SUCCESS;

RootHub_EvtRootHubGetInfo:

    WdfRequestComplete(Request, status);
}

要件

要件
対象プラットフォーム Windows
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header ucxroothub.h (Ucxclass.h を含む)
IRQL DISPATCH_LEVEL

こちらもご覧ください

_ROOTHUB_INFO