UcxRootHubCreate 函数 (ucxroothub.h)

为指定的主机控制器创建根中心对象。

语法

NTSTATUS UcxRootHubCreate(
  [in]           UCXCONTROLLER          Controller,
  [in]           PUCX_ROOTHUB_CONFIG    Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXROOTHUB             *RootHub
);

参数

[in] Controller

控制器对象的句柄。 客户端驱动程序在上一次调用 UcxControllerCreate 时检索了句柄。

[in] Config

指向 UCX_ROOTHUB_CONFIG 结构的指针,该结构描述用于创建根中心对象的各种配置操作。

[in, optional] Attributes

指向调用方分配 的WDF_OBJECT_ATTRIBUTES 结构的指针,该结构指定根中心对象的属性。

[out] RootHub

指向接收新根中心对象的句柄的变量的指针。

返回值

如果操作成功,方法将返回STATUS_SUCCESS。 否则,此方法可能会返回一个相应的 NTSTATUS 错误代码。

注解

主机控制器的客户端驱动程序必须在 WdfDeviceCreate 调用后调用此方法。 新根中心对象的父对象是控制器对象。

在调用此方法之前,客户端驱动程序必须通过调用 UCX_ROOTHUB_CONFIG_INIT 初始化 UCX_ROOTHUB_CONFIG 结构。 通过调用设置UCX_ROOTHUB_CONFIG的适当成员,提供指向驱动程序提供的事件回调 实现的函数指针。 当根中心对象中发生事件时,UCX 会调用这些回调函数。

示例

    UCX_ROOTHUB_CONFIG                      ucxRootHubConfig;
    UCXROOTHUB                              ucxRootHub;
    PUCX_ROOTHUB_CONTEXT                    ucxRootHubContext;
  

    // Create the root hub
    //
    UCX_ROOTHUB_CONFIG_INIT(&ucxRootHubConfig,
                            RootHub_EvtRootHubClearHubFeature,
                            RootHub_EvtRootHubClearPortFeature,
                            RootHub_EvtRootHubGetHubStatus,
                            RootHub_EvtRootHubGetPortStatus,
                            RootHub_EvtRootHubSetHubFeature,
                            RootHub_EvtRootHubSetPortFeature,
                            RootHub_EvtRootHubGetPortErrorCount,
                            RootHub_EvtRootHubInterruptTx,
                            RootHub_EvtRootHubGetInfo,
                            RootHub_EvtRootHubGet20PortInfo,
                            RootHub_EvtRootHubGet30PortInfo);

    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_ROOTHUB_CONTEXT);

    status = UcxRootHubCreate(ucxController,
                              &ucxRootHubConfig,
                              &objectAttributes,
                              &ucxRootHub);

    if (!NT_SUCCESS(status)) {
        DbgTrace(TL_ERROR, Controller, "UcxRootHubCreate Failed %!STATUS!", status);
        goto Controller_WdfEvtDeviceAddEnd;
    }

    DbgTrace(TL_INFO, Controller, "UCX Root Hub created.");

    ucxControllerContext->UcxRootHub = ucxRootHub;

    ucxRootHubContext = GetUcxRootHubContext(ucxRootHub);
    ucxRootHubContext->UcxController = ucxController;

要求

要求
最低受支持的客户端 Windows 10
标头 ucxroothub.h
IRQL PASSIVE_LEVEL

另请参阅

UCX_ROOTHUB_CONFIG