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 结构的指针,客户端驱动程序通过调用UCX_CONTROLLER_CONFIG_INIT进行初始化。 该结构包含创建对象所需的配置信息。

[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
目标平台 窗户
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 ucxcontroller.h (include Ucxclass.h)
IRQL PASSIVE_LEVEL

另请参阅

WdfDeviceCreate