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 |