Pergunta

Estou tentando falar com um dispositivo USB usando libusb, mas eu sinto que estou tropeçar na primeira perna da corrida. Eu sei exatamente o que endpoints Preciso conversar, etc., mas eu não posso sequer chegar tão longe. Eu tenho, em essência:

usb_device *dev = ...; // opened from get_busses()
usb_set_configuration(dev, dev->config[0].bConfigurationValue); // bConfigVal = 1

Agora, eu posso olhar para as informações do dispositivo no modo de depuração e eu sei que a configuração atual é 0 (não inicializado / logo após reiniciar), e não é exatamente uma configuração válida, que tem um número de configuração de 1. Mas quando eu definir a configuração para 1, recebo um valor de retorno de -22, que (passou pelo stringifier) ??se traduz em "erro de API do Windows: parâmetro mau

.

Eu não tenho sido capaz de encontrar outras pessoas que têm um problema semelhante, e parece que uma coisa tão simples de fazer - Eu não posso nem reclamar a interface, ou definir o alt-interface, ou qualquer coisa assim , porque eu tenho que definir a configuração primeiro. o que estou perdendo? (Se é importante: este é on WinXP)

Foi útil?

Solução

Olhando para libusb-win32 \ src \ driver \ set_configuration.c, parece haver um monte de razões diferentes para a devolução STATUS_INVALID_PARAMETER.

Use libusb_set_debug (a partir da aplicação do modo de usuário) para definir detalhado nível de depuração, em seguida, executar Sysinternals DebugView para ver mensagens de erro do motorista. Esperamos que você veria um indício a respeito de porque a sua chamada set_configuration falhar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top