Ho finalmente trovato la risposta in lubusb-1.0. In realtà non era una funzione, ma un campo struct:
uint8_t libusb_endpoint_descriptor :: bEndpointAddress
L'indirizzo dell'endpoint descritto da questo descrittore.
Bit 0: 3 sono il numero del punto finale. I bit 4: 6 sono riservati. Bit 7 indica direzione, vedere libusb_endpoint_direction.
Per ogni interfaccia per l'unità usb, ho pensato di scrivere queste righe per visualizzare i punti finali disponibili:
cout<<"Number of endpoints: "<<(int)interdesc->bNumEndpoints<<endl;
for(int k=0; k<(int)interdesc->bNumEndpoints; k++) {
epdesc = &interdesc->endpoint[k];
cout<<"Descriptor Type: "<<(int)epdesc->bDescriptorType<<endl;
cout<<"EP Address: "<<(int)epdesc->bEndpointAddress<<endl;
}
Dove epdesc è il libusb_endpoint_descriptor e interdesc è la libusb_interface_descriptor.