Share via


IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE IOCTL (usbioctl.h)

La solicitud de E/S de IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE registra el controlador de un dispositivo de varias funciones USB (controlador compuesto) con la pila de controladores USB subyacente.

Esta solicitud se envía mediante un controlador que reemplaza al controlador compuesto proporcionado por Microsoft, Usbccgp.sys e implementa la función suspende y la característica de reactivación remota, según la especificación Universal Serial Bus (USB) 3.0.

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE es una solicitud de control de E/S en modo kernel. Esta solicitud tiene como destino el objeto de dispositivo físico del concentrador USB (PDO). Esta solicitud debe enviarse en un nivel de solicitud de interrupción (IRQL) de PASSIVE_LEVEL.

Código principal

IRP_MJ_INTERNAL_DEVICE_CONTROL

Búfer de entrada

Parameters.Others.Argument1 es un puntero a una estructura de REGISTER_COMPOSITE_DEVICE< asignada por el autor de la llamada que contiene información sobre el controlador primario. Para inicializar la estructura, llame a la rutina USBD_BuildRegisterCompositeDevice .

El miembro AssociatedIrp.SystemBuffer apunta a un búfer asignado por el autor de la llamada que es lo suficientemente grande como para contener una matriz de identificadores de función (USBD_FUNCTION_HANDLE tipados) para las funciones del dispositivo compuesto USB. El número de elementos de la matriz se indica mediante el miembro FunctionCount de REGISTER_COMPOSITE_DEVICE. Para obtener el número de funciones, inspeccione los descriptores devueltos por una solicitud get-configuration.

Longitud del búfer de entrada

Tamaño de una estructura de REGISTER_COMPOSITE_DEVICE .

Búfer de salida

En la salida, el búfer al que apunta el miembro AssociatedIrp.SystemBuffer se rellena con identificadores de función para las funciones del dispositivo de varias funciones.

Longitud del búfer de salida

El tamaño de los identificadores de función para las funciones del dispositivo.

Bloque de estado

La pila del controlador USB establece Irp-IoStatus.Status> en STATUS_SUCCESS si la solicitud se completa correctamente. STATUS_SUCCESS indica que los identificadores de función son válidos.

En caso de error, Irp-IoStatus.Status> contiene un estado de error adecuado. Por ejemplo, si el controlador compuesto envía la solicitud más de una vez, el estado se establece en STATUS_INVALID_DEVICE_REQUEST.

Comentarios

El propósito de IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE es que el controlador compuesto envíe una solicitud de registro a la pila del controlador USB. En la solicitud de registro, el controlador compuesto especifica el número de funciones admitidas por el dispositivo. Por lo tanto, debe enviar la solicitud IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE después de determinar el número de funciones. Normalmente, esa información se recupera en la rutina start-device del controlador compuesto IRP_MN_START_DEVICE. Tenga en cuenta que el número de interfaces de una configuración puede indicar el número de funciones, pero no siempre. Algunos dispositivos de varias funciones exponen varias interfaces relacionadas con una función. Para obtener el número de funciones, debe inspeccionar varios descriptores relacionados con una configuración determinada. Estos descriptores se pueden obtener a través de una solicitud get-descriptor.

En respuesta a la solicitud de registro, la pila del controlador USB proporciona una lista de identificadores para las funciones del dispositivo. Para obtener un ejemplo de código, vea Cómo registrar un dispositivo compuesto.

Una vez registrado el controlador compuesto, el controlador puede configurar la característica de reactivación remota. Mediante el identificador de función, el controlador compuesto puede enviar una solicitud IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION para obtener notificaciones de reactivación remota de la pila del controlador USB, cuando la función asociada envía una señal de reanudación.

Para quitar la asociación del controlador compuesto con la pila de controladores USB y liberar todos los recursos asignados para el registro, el controlador debe enviar la solicitud de IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8
Encabezado usbioctl.h (incluya Usbioctl.h)
IRQL PASSIVE_LEVEL

Consulte también

Cómo registrar un dispositivo compuesto

IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE