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) |
程式庫 | Urscxstub.lib |
IRQL | PASSIVE_LEVEL |