一些代码:
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。 请注意,这个结构由我必须访问的库填充
答案 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指针数组。