访问结构变量双指针

时间:2010-01-18 11:54:34

标签: c pointers structure

一些代码:

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参数;

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

能够通过 - >访问NumInterfaceDescriptors params.Types.Descriptor.NumInterfaceDescriptors

我想通过WDF_USB_DEVICE_SELECT_CONFIG_PARAMS访问bInterfaceClass。 请注意,这个结构由我必须访问的库填充

2 个答案:

答案 0 :(得分:2)

出现你想要的是:

ULONG iface;

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

..但是你应该花更多的时间来清楚地解决问题,这样人们就不必猜出你的意思了。

答案 1 :(得分:1)

Google for WDF_USB_DEVICE_SELECT_CONFIG_PARAMS。第一个命中引导您到相关的MSDN页面,它告诉您Types.Descriptor.InterfaceDescriptors

  

包含驱动程序提供的指向 USB_INTERFACE_DESCRIPTOR结构数组的指针

和Types.Descriptor.NumInterfaceDescriptors确实

  

包含Types.Descriptor.InterfaceDescriptors指向的接口数组中的元素数

Ergo,你的“指针指针”实际上是一个USB_INTERFACE_DESCRIPTOR指针数组。