Bonjour à tous,
J'ai un buffer qui est rempli avec des structures consécutives de différents types (USB_CONFIGURATION_DESCRIPTOR, USB_INTERFACE_DESCRIPTOR et USB_ENDPOINT_DESCRIPTOR). J'arrive à récupérer les valeurs de la première structure en castant le pointeur du buffer par le type approprié.
PUSB_CONFIGURATION_DESCRIPTOR _conf = (PUSB_CONFIGURATION_DESCRIPTOR) OutBuffer;
Ensuite, j'essaie de récupérer les autres de la manière suivante :
PUSB_INTERFACE_DESCRIPTOR _inter= (PUSB_INTERFACE_DESCRIPTOR) (OutBuffer + _conf->bLength);
Cependant, ça n'a pas l'air de fonctionner véritablement car même si pour cette interface j'ai les bonnes valeurs après pour le passage aux endpoints je n'ai plus rien de bon.
Le buffer est retourné à partir d'un IOCTL qui utilise la fonction UsbBuildGetDescriptorRequest :
UsbBuildGetDescriptorRequest(Urb, (USHORT) sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST),
USB_CONFIGURATION_DESCRIPTOR_TYPE,
0,
0,
Configuration,
NULL,
*Length,
NULL);
Le WDK me confirme bien que cette fonction me retourne à la fois la configuration mais aussi les interfaces et les endpoints, je devrais donc tout avoir dans mon buffer.
Comment je pourrais être sur de bien pointer sur les bonnes structures ?
Merci de votre aide
Partager