IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)
La solicitud de E/S de IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME consulta al controlador de bus para el nombre del dispositivo del controlador de host USB.
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME es una solicitud de control de E/S en modo kernel. Esta solicitud tiene como destino el PDO del concentrador USB. Esta solicitud debe enviarse en un IRQL de PASSIVE_LEVEL.
Código principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Búfer de entrada
Parameters.Others.Argument1 debe ser un puntero a una estructura de USB_HUB_NAME que se rellenará con el nombre del controlador de host.
Longitud del búfer de entrada
Parameters.Others.Argument2 debe ser un ULONG que especifique la longitud del búfer (en bytes) en Parameters.Others.Argument1.
Búfer de salida
El controlador de bus rellenará el búfer al que apunta Parameters.Others.Argument1 con el nombre del dispositivo del controlador de host.
Longitud del búfer de salida
Solo se rellenará hasta la longitud especificada en Parameters.Others.Argument2.
Bloque de estado
El controlador de autobús o puerto establece Irp-IoStatus.Status> en STATUS_SUCCESS o el estado de error adecuado.
Comentarios
El autor de la llamada debe proporcionar un búfer lo suficientemente grande como para contener una estructura de USB_HUB_NAME . El valor Parameters.Others.Argument2 indica el tamaño de ese búfer. Una vez finalizada correctamente, el miembro HubName de USB_HUB_NAME contiene el nombre del controlador y el miembro ActualLength indica la longitud de la cadena de nombre del controlador. Tenga en cuenta que ActualLength no indica el tamaño de toda la estructura USB_HUB_NAME . Si el búfer proporcionado en Parameters.Others.Argument1 no es lo suficientemente grande como para contener la cadena, el valor hubName podría mostrar una cadena truncada.
Para obtener el tamaño del búfer necesario para contener la cadena, envíe la solicitud dos veces. En la primera solicitud, especifique un búfer que sea al menos sizeof(USB_HUB_NAME)
bytes. De lo contrario, ActualLength no indica la longitud correcta de la cadena y se produce un error en la solicitud con STATUS_BUFFER_TOO_SMALL.
Una vez completada correctamente la primera solicitud, asigne un búfer de ActualLength + sizeof(ULONG)
bytes y vuelva a enviar la solicitud. Una vez completada la solicitud, HubName indica toda la cadena de nombre del controlador.
Requisitos
Requisito | Valor |
---|---|
Header | usbioctl.h |