共用方式為


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
目標平臺 窗戶
最低 KMDF 版本 1.15
標頭 ursdevice.h (包括 Urscx.h)
連結庫 Urscxstub.lib
IRQL PASSIVE_LEVEL

另請參閱

URS_CONFIG

URS_CONFIG_INIT