UrsDeviceInitialize 函数 (ursdevice.h)
初始化框架设备对象以支持与 USB 双角色控制器相关的操作,并将相关事件回调函数注册到 USB 双角色控制器类扩展。
语法
NTSTATUS UrsDeviceInitialize(
[in] WDFDEVICE Device,
[in] PURS_CONFIG Config
);
参数
[in] Device
客户端驱动程序在上一次调用 WdfDeviceCreate 时检索到的框架设备对象的句柄。
[in] Config
指向客户端驱动程序通过调用 URS_CONFIG_INIT 初始化 的 URS_CONFIG 结构的指针。
返回值
如果操作成功,方法将返回STATUS_SUCCESS。 否则,此方法可能会返回相应的 NTSTATUS 错误代码。
注解
USB 双角色控制器的客户端驱动程序必须在 WdfDeviceCreate 调用后调用此方法。
客户端驱动程序在其 EvtDriverDeviceAdd 实现中调用此方法。
在此调用期间,客户端驱动程序提供的事件回调实现也通过设置 URS_CONFIG的适当成员进行注册。
方法为主机和函数角色以及处理发送到控制器的 IOCTL 请求所需的队列创建资源列表。 每次执行角色切换操作时,当前角色的子设备堆栈都会被拆掉,并加载新角色的设备堆栈。 UrsDeviceInitialize 方法检索用于生成这些设备堆栈的标识信息。 方法还从基础总线(如 ACPI)检索有关设备的信息。
示例
EVT_URS_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtUrsFilterResourceRequirements;
EVT_URS_SET_ROLE EvtUrsSetRole;
EvtDriverDeviceAdd (
_In_ WDFDRIVER Driver,
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
...
WDFDEVICE device;
NTSTATUS status;
WDF_OBJECT_ATTRIBUTES attributes;
URS_CONFIG ursConfig;
...
status = UrsDeviceInitInitialize(DeviceInit);
if (!NT_SUCCESS(status)) {
//UrsDeviceInitInitialize failed.
return status;
}
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DRIVER_CONTEXT);
status = WdfDeviceCreate(&DeviceInit, &attributes, &device);
if (!NT_SUCCESS(status)) {
// WdfDeviceCreate failed.
return status;
}
URS_CONFIG_INIT(&ursConfig, UrsHostInterfaceTypeXhci, EvtUrsFilterResourceRequirements);
ursConfig.EvtUrsSetRole = EvtUrsSetRole;
status = UrsDeviceInitialize(device, &ursConfig);
if (!NT_SUCCESS(status)) {
// UrsDeviceInitialize failed.
return status;
}
...
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 |
最低受支持的服务器 | Windows Server 2016 |
目标平台 | Windows |
最低 KMDF 版本 | 1.15 |
标头 | ursdevice.h (包括 Urscx.h) |
Library | Urscxstub.lib |
IRQL | PASSIVE_LEVEL |