Accéder à une variable de structure double pointeur

Un code:

typedef struct _WDF_USB_DEVICE_SELECT_CONFIG_PARAMS { ULONG Size; WdfUsbTargetDeviceSelectConfigType Type; union { struct { PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor; PUSB_INTERFACE_DESCRIPTOR* InterfaceDescriptors; ULONG NumInterfaceDescriptors; } Descriptor; struct { PURB Urb; } Urb; } Types; 

} WDF_USB_DEVICE_SELECT_CONFIG_PARAMS, * PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS; WDF_USB_DEVICE_SELECT_CONFIG_PARAMS parameters;

 typedef struct _USB_INTERFACE_DESCRIPTOR { UCHAR bLength ; UCHAR bInterfaceClass ; UCHAR bInterfaceSubClass ; } USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR ; 

Capable d’accéder aux NumInterfaceDescriptors via -> params.Types.Descriptor.NumInterfaceDescriptors

Je souhaite accéder à bInterfaceClass via WDF_USB_DEVICE_SELECT_CONFIG_PARAMS. Veuillez noter que cette structure est remplie par la bibliothèque, je dois simplement y accéder

Il semble que ce que vous voulez c’est:

 ULONG iface; for (iface = 0; iface < params.Types.Descriptor.NumInterfaceDescriptors; iface++) { do_something_with(params.Types.Descriptor.InterfaceDescriptors[iface]); } 

..mais vous devriez vraiment consacrer un peu plus de temps à clarifier vos questions afin que les gens n'aient pas à deviner ce que vous voulez dire.

Google for WDF_USB_DEVICE_SELECT_CONFIG_PARAMS. Le premier résultat vous mène à la page MSDN appropriée, qui vous indique que Types.Descriptor.InterfaceDescriptors

contient un pointeur fourni par le pilote sur un tableau de structures USB_INTERFACE_DESCRIPTOR

et que Types.Descriptor.NumInterfaceDescriptors en effet

contient le nombre d’éléments contenus dans le tableau d’ interface vers lequel Types.Descriptor.InterfaceDescriptors pointe.

Ainsi, votre “pointeur sur pointeur” est en réalité un tableau de pointeurs USB_INTERFACE_DESCRIPTOR.