Compartilhar via


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

Confira também

USB_HUB_NAME