Share via


función USBD_CreateConfigurationRequestEx (usbdlib.h)

La rutina USBD_CreateConfigurationRequestEx asigna y da formato a un URB para seleccionar una configuración para un dispositivo USB.

USBD_CreateConfigurationRequestEx reemplaza USBD_CreateConfigurationRequest.

Sintaxis

PURB USBD_CreateConfigurationRequestEx(
  [in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
  [in] PUSBD_INTERFACE_LIST_ENTRY    InterfaceList
);

Parámetros

[in] ConfigurationDescriptor

Puntero a una estructura de USB_CONFIGURATION_DESCRIPTOR asignada por el autor de la llamada que contiene el descriptor de configuración para la configuración que se va a seleccionar. Normalmente, el controlador cliente envía un URB del tipo URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (consulte _URB_CONTROL_DESCRIPTOR_REQUEST) para recuperar información sobre configuraciones, interfaces, puntos de conexión, el proveedor y descriptores específicos de clase desde un dispositivo USB. Cuando el controlador cliente especifica USB_CONFIGURATION_DESCRIPTOR_TYPE como el tipo de descriptor, la solicitud recupera toda la información del dispositivo en una estructura de USB_CONFIGURATION_DESCRIPTOR . A continuación, el controlador pasa el puntero recibido a la estructura USB_CONFIGURATION_DESCRIPTOR en el parámetro ConfigurationDescriptor .

[in] InterfaceList

Puntero al primer elemento de una matriz asignada por el autor de la llamada de USBD_INTERFACE_LIST_ENTRY estructuras. La longitud de la matriz depende del número de interfaces del descriptor de configuración. El número de elementos de la matriz debe ser uno más que el número de interfaces de la configuración. Inicialice la matriz llamando a RtlZeroMemory. El miembro InterfaceDescriptor del último elemento de la matriz debe establecerse en NULL.

Valor devuelto

USBD_CreateConfigurationRequestEx asigna una estructura URB , la da formato a la solicitud de URB_FUNCTION_SELECT_CONFIGURATION (solicitud select-configuration) y devuelve un puntero al URB. Después, el controlador cliente puede usar el URB devuelto para enviar la solicitud select-configuration al controlador del controlador de host para establecer la configuración. Debe liberar el URB cuando haya terminado de usarlo.

Comentarios

Para obtener información sobre cómo crear una solicitud de configuración de selección y un ejemplo de código, vea Cómo seleccionar una configuración para un dispositivo USB.

El valor devuelto es un puntero a la estructura URB que puede usar para enviar una solicitud select-configuration al controlador del controlador de host para establecer la configuración especificada.

Una vez completada la pila de controladores USB, puede inspeccionar las estructuras de USBD_INTERFACE_INFORMATION . El miembro Pipes de USBD_INTERFACE_INFORMATION apunta a una matriz de estructuras de USBD_PIPE_INFORMATION . El controlador de bus USB rellena la matriz de estructuras de USBD_PIPE_INFORMATION con información sobre las tuberías asociadas a los extremos de la interfaz. El controlador cliente puede obtener identificadores de canalización de Pipes[i].PipeHandle y usarlos para enviar solicitudes de E/S a canalizaciones específicas.

Después de haber completado todas las operaciones con el URB devuelto, debe liberar el URB llamando a ExFreePool.

Puede asignar el descriptor de configuración y la matriz desde un grupo no paginado o paginado. Los autores de llamadas de esta rutina se pueden ejecutar en IRQL <= DISPATCH_LEVEL si la memoria a la que apunta ConfigurationDescriptor e InterfaceList se asigna desde un grupo no paginado. De lo contrario, los llamadores deben ejecutarse en irQL < DISPATCH_LEVEL.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado usbdlib.h (incluye Usbdlib.h)
Library Usbd.lib
IRQL DISPATCH_LEVEL (ver comentarios)

Consulte también

Cómo seleccionar una configuración para un dispositivo USB

Referencia de programación del controlador de dispositivo USB

USBD_INTERFACE_INFORMATION

_URB_SELECT_CONFIGURATION