UcxControllerCreate 函数 (ucxcontroller.h)

创建主控制器对象。

语法

NTSTATUS UcxControllerCreate(
  [in]           WDFDEVICE              Device,
  [in]           PUCX_CONTROLLER_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXCONTROLLER          *Controller
);

参数

[in] Device

客户端驱动程序在上一次调用 WdfDeviceCreate 时检索到的框架设备对象的句柄。

[in] Config

指向客户端驱动程序通过调用 UCX_CONTROLLER_CONFIG_INIT 初始化的调用方分配UCX_CONTROLLER_CONFIG结构的指针。 结构包含创建 对象所需的配置信息。

[in, optional] Attributes

指向调用方分配 的WDF_OBJECT_ATTRIBUTES 结构的指针,该结构指定控制器对象的属性。

[out] Controller

指向接收新控制器对象的句柄的变量的指针。

返回值

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

注解

主机控制器的客户端驱动程序必须在 WdfDeviceCreate 调用后调用此方法。 新主机控制器对象的父级是框架设备对象。

在此调用期间,还会注册客户端驱动程序提供的事件回调实现。 通过调用设置UCX_CONTROLLER_CONFIG的适当成员来提供指向这些 函数的函数指针。

如果父类型为 PCI,则通过调用 UCX_CONTROLLER_CONFIG_SET_PCI_INFO 初始化 UCX_CONTROLLER_CONFIG。 如果父级是 ACPI,请改为调用 UCX_CONTROLLER_CONFIG_SET_ACPI_INFO

方法创建处理发送到 USB 设备的 IOCTL 请求所需的各种队列。

方法注册设备接口GUID_DEVINTERFACE_USB_HOST_CONTROLLER和符号链接,以便用户模式组件可以打开控制器的句柄。

示例


    WDF_OBJECT_ATTRIBUTES                   objectAttributes;
    UCX_CONTROLLER_CONFIG                   ucxControllerConfig;
    UCXCONTROLLER                           ucxController;
    PUCX_CONTROLLER_CONTEXT                 ucxControllerContext;

    // Create the controller
    //
    UCX_CONTROLLER_CONFIG_INIT(&ucxControllerConfig, "");
    ucxControllerConfig.EvtControllerUsbDeviceAdd = UsbDevice_EvtControllerUsbDeviceAdd;
    ucxControllerConfig.EvtControllerQueryUsbCapability = Controller_EvtControllerQueryUsbCapability;
    ucxControllerConfig.EvtControllerReset = Controller_EvtControllerReset;
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_CONTROLLER_CONTEXT);
    
    status = UcxControllerCreate(wdfDevice,
        &ucxControllerConfig,
        &objectAttributes,
        &ucxController);

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

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

    controllerContext->UcxController = ucxController;

    ucxControllerContext = GetUcxControllerContext(ucxController);
    ucxControllerContext->WdfDevice = wdfDevice;

要求

要求
最低受支持的客户端 Windows 10
目标平台 Windows
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 ucxcontroller.h (包括 Ucxclass.h)
IRQL PASSIVE_LEVEL

另请参阅

WdfDeviceCreate