IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)
A solicitação de E/S IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME consulta o driver do barramento para o nome do dispositivo do controlador de host USB.
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME é uma solicitação de controle de E/S no modo kernel. Essa solicitação tem como destino o PDO do hub USB. Essa solicitação deve ser enviada em um IRQL de PASSIVE_LEVEL.
Código principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Buffer de entrada
Parameters.Others.Argument1 deve ser um ponteiro para uma estrutura USB_HUB_NAME que será preenchida com o nome do controlador host.
Comprimento do buffer de entrada
Parameters.Others.Argument2 deve ser um ULONG que especifica o comprimento do buffer (em bytes) em Parameters.Others.Argument1.
Buffer de saída
O driver do barramento preencherá o buffer apontado por Parameters.Others.Argument1 com o nome do dispositivo do controlador de host.
Comprimento do buffer de saída
Ele será preenchido somente até o comprimento especificado em Parameters.Others.Argument2.
Bloco de status
O driver de barramento ou porta define Irp-IoStatus.Status> como STATUS_SUCCESS ou o erro apropriado status.
Comentários
O chamador deve fornecer um buffer grande o suficiente para manter uma estrutura USB_HUB_NAME . O valor Parameters.Others.Argument2 indica o tamanho desse buffer. Após a conclusão bem-sucedida, o membro HubName do USB_HUB_NAME contém o nome do controlador e o membro ActualLength indica o comprimento da cadeia de caracteres de nome do controlador. Observe que ActualLength não indica o tamanho de toda a estrutura USB_HUB_NAME . Se o buffer fornecido em Parameters.Others.Argument1 não for grande o suficiente para manter a cadeia de caracteres, o valor HubName poderá mostrar uma cadeia de caracteres truncada.
Para obter o tamanho do buffer necessário para manter a cadeia de caracteres, envie a solicitação duas vezes. Na primeira solicitação, especifique um buffer que seja pelo menos sizeof(USB_HUB_NAME)
bytes. Caso contrário, ActualLength não indicará o comprimento correto da cadeia de caracteres e a solicitação falhará com STATUS_BUFFER_TOO_SMALL.
Depois que a primeira solicitação for concluída com êxito, aloque um buffer de ActualLength + sizeof(ULONG)
bytes e envie a solicitação novamente. Após a conclusão da solicitação, HubName indica toda a cadeia de caracteres de nome do controlador.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | usbioctl.h |