Función UrsDeviceInitialize (ursdevice.h)
Inicializa un objeto de dispositivo de marco para admitir operaciones relacionadas con un controlador de doble rol USB y registra las funciones de devolución de llamada de eventos pertinentes con la extensión de clase de controladora de doble rol USB.
Sintaxis
NTSTATUS UrsDeviceInitialize(
[in] WDFDEVICE Device,
[in] PURS_CONFIG Config
);
Parámetros
[in] Device
Identificador del objeto de dispositivo de marco que el controlador cliente recuperó en la llamada anterior a WdfDeviceCreate.
[in] Config
Puntero a una estructura de URS_CONFIG que inicializó el controlador cliente llamando a URS_CONFIG_INIT.
Valor devuelto
El método devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver un código de error NTSTATUS adecuado.
Observaciones
El controlador cliente para el controlador de doble rol USB debe llamar a este método después de la llamada WdfDeviceCreate.
El controlador cliente llama a este método en su implementación de EvtDriverDeviceAdd.
Durante esta llamada, las implementaciones de devolución de llamada de eventos proporcionadas por el controlador cliente también se registran estableciendo los miembros adecuados de URS_CONFIG.
El método crea listas de recursos para los roles de host y función y las colas necesarias para controlar las solicitudes IOCTL que se envían al controlador. Con cada operación de conmutador de rol, la pila de dispositivos secundarias del rol actual se descompone y se carga la pila de dispositivos para el nuevo rol. El método UrsDeviceInitialize recupera la información de identificación que se usa para compilar esas pilas de dispositivos. El método también recupera información sobre el dispositivo del bus subyacente, como ACPI.
Ejemplos
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;
}
...
}
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 10 |
servidor mínimo admitido | Windows Server 2016 |
de la plataforma de destino de | Windows |
versión mínima de KMDF | 1.15 |
encabezado de | ursdevice.h (incluya Urscx.h) |
biblioteca de | Urscxstub.lib |
irQL | PASSIVE_LEVEL |