EVT_UCX_ROOTHUB_GET_INFO回调函数 (ucxroothub.h)

当 UCX 收到有关根中心信息的请求时,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 连接器都由根中心上一个或多个不同速度的端口表示。

客户端驱动程序在 请求中返回完成状态。 驱动程序可以异步完成 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