【问题标题】:Accessing a structure variable double pointer访问结构变量双指针
【发布时间】:2010-01-18 11:54:34
【问题描述】:

一些代码:

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 ;

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

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

【问题讨论】:

  • 我已经回滚了这个,所以至少代码是清晰的。请从此时开始进行任何进一步的编辑,当您完成编辑后,检查您所做的工作是否产生清晰的输出!
  • 请记住,编辑预览中显示的内容不一定是最终页面上显示的内容。
  • @Neil:干得好......我尝试了几次,包括将代码复制到外部编辑器并在那里整理,但我放弃了。当工会的成员没有缩进时,我发现仍然很难破译。这当然不是你的错,一开始就让人大跌眼镜。
  • @unwind - 是的,我自己也搞不清楚 :-)
  • 关于stackoverflow.com/questions/2084077/accessing-double-pointer(以及我对它的评论),在提交之前尝试校对您的问题,非常感谢一旦你提出问题,尽量不要显着改变问题。我还建议在跑步之前学习走路,即在进入 USB 接口编程之前学习如何处理结构、指针和 typedef。

标签: c pointers structure


【解决方案1】:

看来你想要的是:

ULONG iface;

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

..但你真的应该多花点时间来明确你的问题,这样人们就不必猜测你的意思了。

【讨论】:

  • InterfaceDescriptors 是一个指向结构体的双指针
  • 我可以看到。结构定义强烈暗示它是一个指向 NumInterfaceDescriptors 指向结构的指针数组的指针。
【解决方案2】:

Google 获取 WDF_USB_DEVICE_SELECT_CONFIG_PARAMS。第一次点击将您带到相关的 MSDN 页面,该页面告诉您 Types.Descriptor.InterfaceDescriptors

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

确实是 Types.Descriptor.NumInterfaceDescriptors

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

所以,您的“指向指针”实际上是一个 USB_INTERFACE_DESCRIPTOR 指针数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2018-12-05
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多