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

另请参阅

URS_CONFIG

URS_CONFIG_INIT