typedef struct _WDF_USB_DEVICE_SELECT_CONFIG_PARAMS {
ULONG尺寸;
WdfUsbTargetDeviceSelectConfigType类型;
union {
struct {
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
PUSB_INTERFACE_DESCRIPTOR* InterfaceDescriptors;
ULONG NumInterfaceDescriptors;
} Descriptor;
struct {
PURB Urb;
} Urb;
struct {
UCHAR NumberConfiguredPipes;
WDFUSBINTERFACE ConfiguredUsbInterface;
} SingleInterface;
struct {
UCHAR NumberInterfaces;
PWDF_USB_INTERFACE_SETTING_PAIR Pairs;
UCHAR NumberOfConfiguredInterfaces;
} MultiInterface;
}类型;
} 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 :(得分:4)
(*someIntDesc)->iInterface
答案 1 :(得分:2)
IntDesc foo;
// somehow initialize foo to actually point to (a pointer to) a valid structure
(*foo)->iInterface = 10;
答案 2 :(得分:1)
IntDesc是一种类型,而不是变量。所以你需要做的第一件事就是创建一个正确类型的变量:
IntDesc id;
接下来,您需要让它指向已分配的内存。我要把所有东西放在堆栈上,你可能有其他需求:
USB_INTERFACE_DESCRIPTOR usb;
PUSB_INTERFACE_DESCRIPTOR pusb = &usb;
id = &pusb;
既然你有一个有效的指针,你可以继续取消引用它。由于这是一个双指针,您需要取消引用它两次:
(*(*id)).iInterface = 10;
由于C将->
定义为*
和.
的组合,因此您可以更简洁地表达:
(*id)->iInterface = 10;
答案 3 :(得分:1)
从名称InterfaceDescriptors
开始,它似乎指向一个指向结构的指针数组。所以更惯用的方式是:
InterfaceDescriptors[0]->iInterface = 10;
答案 4 :(得分:0)
像这样尊重
(*intDesc)->iInterface
答案 5 :(得分:0)
您的代码非常错误
NODE* ptr;
k.N.iInterface = 100;
ptr = (NODE*)malloc(sizeof(NODE));
在访问之前:
ptr->N1->iInterface
N1应初始化为某种东西。