Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Инициализирует объект устройства платформы для поддержки операций, связанных с контроллером двойной роли USB, и регистрирует соответствующие функции обратного вызова событий с расширением класса контроллера двойной роли USB.
Синтаксис
NTSTATUS UrsDeviceInitialize(
[in] WDFDEVICE Device,
[in] PURS_CONFIG Config
);
Параметры
[in] Device
Дескриптор объекта устройства платформы, полученный драйвером клиента в предыдущем вызове WdfDeviceCreate.
[in] Config
Указатель на структуру URS_CONFIG, которая инициализирована драйвером клиента путем вызова URS_CONFIG_INIT.
Возвращаемое значение
Метод возвращает 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 (include Urscx.h) |
| библиотеки | Urscxstub.lib |
| IRQL | PASSIVE_LEVEL |