基于DWC2的USB驱动开发-IAD描述符详解
基于DWC2的USB驱动开发-IAD描述符详解 (qq.com)
【资料图】
一.前言IAD描述符用于一个设备功能关联多个接口,可以用于实现组合设备。
二.参考文档参考《iadclasscode_r10.pdf》
USBInterface Association DescriptorDevice Class Code and use Model Revision 1.0 July 23,2003
直接在https://www.usb.org/documents下搜索”USB Interface Association Descriptor Device Class Code”下载
参考《InterfaceAssociationDescriptor_ecn.pdf》
下载地址https://www.usb.org/sites/default/files/iadclasscode_r10.pdf
三.概述从(USB规范的)第一天起,关于是否应允许多功能设备每个逻辑功能使用一个以上接口,一直存在歧义。核心规范没有为每个功能含多个接口的情况提供任何特定的框架支持,但几个设备工作组(DWG)使用它们定义了设备类,并使用不同的方法来确定接口应如何组织在一起。DWG Common Class组在定义标准方法方面做了大量工作,但定义较晚,从未被采用,最终被停用
最近的USB 2.0 ECN接口关联描述符(IAD)通过在USB设备框架中定义一种标准方法来解决这个问题,该方法用于描述应该绑定到设备驱动程序的同一实例的接口(及其金额选设置)的关联。参考《InterfaceAssociationDescriptor_ecn.pdf》。
当连接到USB软件不理解IAD的系统时,使用IAD的新设备存在遗留问题(意味着与设备驱动程序的接口级绑定,而不是设备级绑定)。尽管IAD会被忽略,但由于USB系统软件无法将接口与驱动程序正确绑定,设备可能无法按预期工作。
USB核心团队已经分配了一个设备级类代码,该代码必须包含在使用IAD的设备实现中。
这提供了在设备枚举期间对启用IAD的设备的最简单检测,这将允许安装具有正确解析配置和为使能IAD的设备定位适当的驱动程序能力的专用功能驱动程序。
3.1 IAD的来源背景ECN即USB Engineering Change Notice,USB的工程变更通知。
《InterfaceAssociationDescriptor_ecn.pdf》此ECN定义了一个新的标准描述符和接口编号规则,允许设备描述哪一个接口和同一个设备功能关联。这允许操作系统将所有适当的接口绑定到同一驱动程序实例,即多个接口对应一个设备功能。
核心USB框架假设的基本配置模型是,设备上的接口和功能之间始终存在1:1的关联,即一个接口对应一个设备功能。系统软件是按照核心规范的意图设计的,并假设每个功能(和一个接口)有一个驱动程序(见下图)
一些设备类规范已经超过了核心USB规范框架,并定义了使用多个接口(即多个接口描述符)的设备功能。支持这一点的模型仍然只需要每个功能一个功能驱动程序,但也需要多个接口绑定到同一个驱动程序实例(见下图)。不幸的是,没有标准方法允许设备通过设备框架来描述配置中的哪些接口应该与相同的功能相关联。
此更改通知定义了设备框架的必要扩展,允许设备注释哪些接口与同一功能相关。这种设备框架扩展最终将被用于所有每个设备功能使用多个接口的设备。
3.2对软件的影响对现有操作系统版本和现有设备类没有影响。系统软件会忽略新的描述符。他们描述的接口不会改变。使用多个接口来管理单个设备功能的设备的未来实现必须支持此功能。
操作系统当前不支持的设备类会对未来/新的设备实现产生影响。具体来说,如果一个设备实现包括多个功能单元(每个单元有多个接口),那么该设备将仅在支持此新描述符的操作系统实现上正确枚举
为了更容易地增强现有的操作系统实现,使其能够处理使用该描述符的设备,将分配设备类代码,目的是所有使用接口关联描述符的设备都将在其设备描述符中使用该类代码。这将允许轻松安装一个新的驱动程序,该驱动程序知道如何解析和枚举包括接口关联描述符的配置。IAD的分类代码将记录在usb.org网站上。
现有设备类工作组负责确定是否需要修改其单独的规范以使用或利用此新的框架扩展。
3.3合规性测试影响最终必须更新标准合规工具集(USBCV),以检查这些新描述符的格式(和使用)。
此外,必须为合规工具建立一些规则,以确定哪个设备应该使用这些描述符,并因未使用这些描述符而使其失败。
四.IAD描述符4.1描述符类型添加了新的IAD描述符类型11。
以下建议与以前的操作系统向后兼容。它保留了当前的接口定义,并添加了一个新的描述符类型。对于旧的操作系统版本,新的描述符将被忽略,旧的机制将占上风。对于新的操作系统版本,新的描述符将生效。
将以下内容添加到USB规格书2.0表9-6中(注意,核心规范目前定义的值为1-8。自发布以来,值9和10的分配如下所述)。
Descriptor Types | Value |
DEVICE | 1 |
CONFIGURATION | 2 |
STRING | 3 |
INTERFACE | 4 |
ENDPOINT | 5 |
DEVICE_QUALIFIER | 6 |
OTHER_SPEED_CONFIGURATION | 7 |
INTERFACE_POWER | 8 |
OTG | 9 |
DEBUG | 10 |
INTERFACE_ASSOCIATION | 11 |
USB规格书2.0中P251中内容如下,即添加了类型11的IAD描述符类型。
Table 9-5. Descriptor Types
Descriptor Types | Value |
DEVICE | 1 |
CONFIGURATION | 2 |
STRING | 3 |
INTERFACE | 4 |
ENDPOINT | 5 |
DEVICE_QUALIFIER | 6 |
OTHER_SPEED_CONFIGURATION | 7 |
INTERFACE_POWER1 | 8 |
以下是接口关联描述符的定义。在下一次规范修订更新时,应将其作为新的第9.6.6节(将当前第9.6.6章移至第9.6.7章,依此类推)。
接口关联描述符用于描述两个或多个接口与同一功能相关联。“关联”包括两个或多个接口及其所有可选设置接口。
对于需要多个接口的每个设备功能,设备必须使用接口关联描述符。
接口关联描述符总是作为GetDescriptor(configuration)请求返回的配置信息的一部分返回。无法使用GetDescriptor()或SetDescriptor()请求直接访问接口关联描述符。
接口关联描述符必须位于与其关联的接口的接口描述符集(包括所有可选设置)之前。
关联接口集中的所有接口编号必须是连续的。
表9-Z显示了标准接口关联描述符。
接口关联描述符包括函数类、子类和协议字段。这些字段中的值可以与任何一个相关接口的接口类、子类和协议值相同。
对于现有的设备类,优选的实现是使用关联接口列表中第一个接口的接口类、子类和协议字段值。
注意:由于此特定功能未包含在早期版本的USB规范中,因此现有的USB操作系统实现将如何支持使用此描述符的设备存在问题。强烈建议使用接口关联描述符的设备实现使用设备描述符中的多接口功能类代码。这允许简单而容易地识别这些设备,并允许在某些操作系统上安装升级驱动程序,该驱动程序可以解析和枚举包括接口关联描述符的配置。多接口函数类代码记录在http://www.usb.org/developers/docs网站
Table 9–Z. Standard Interface Association Descriptor
偏移 | 区域 | 大小 | 值 | 描述 |
0 | bLength | 1 | Number | 描述符字节数. |
1 | bDescriptorType | 1 | Constant | INTERFACE ASSOCIATION 描述符即11. |
2 | bFirstInterface | 1 | Number | 和该功能关联的第一个接口序号 |
3 | bInterfaceCount | 1 | Number | 和该功能关联的接口个数 |
4 | bFunctionClass | 1 | Class | USB-IF分配的类编码.不能写00xFF表示厂商自定义其他值由USB-IF分配. |
5 | bFunctionSubClass | 1 | SubClass | USB-IF分配的子类编码.bFunctionClass 不为FFH 则所有值都由USBIF分配. |
6 | bFunctionProtocol | 1 | Protocol | USB-IF分配的协议编码. 这些代码由bFunctionClass和bFunctionSubClass字段的值限定。 |
7 | iFunction | 1 | Index | 描述该功能的字符串描述符索引 |
其中bFunctionClass ,bFunctionSubClass,bFunctionProtocol 的值需要根据具体的设备类文档确定
比如UVC参考《UVC 1.5 Class specification.pdf》Universal Serial Bus Device Class Definition for Video Devices Revision 1.5 August 9, 2012 P60
Table 3-1 Standard Video Interface Collection IAD
Offset | Field | Size | Value | Description |
0 | bLength | 1 | Number | Size of this descriptor, in bytes: 8 |
1 | bDescriptorType | 1 | Constant | INTERFACE ASSOCIATIONDescriptor. |
2 | bFirstInterface | 1 | Number | Interface number of the firstVideoControl interface that isassociated with this function. |
3 | bInterfaceCount | 1 | Number | Number of contiguous VideoStreaminginterfaces that are associated with thisfunction. The count includes the firstVideoControl interface and all itsassociated VideoStreaming interfaces. |
4 | bFunctionClass | 1 | Class | CC_VIDEO. Video Interface Classcode (assigned by the USB). Seesection A.1, "Video Interface ClassCode". |
5 | bFunctionSubClass | 1 | SubClass | SC_VIDEO_INTERFACE_COLLECTION. Video Interface Subclass code.Assigned by this specification. Seesection A.2, "Video Interface SubclassCodes". |
6 | bFunctionProtocol | 1 | Protocol | Not used. Must be set toPC_PROTOCOL_UNDEFINED. |
7 | iFunction | 1 | Index | Index of a string descriptor thatdescribes this interface. This must beused for the device (function) name andbe implemented in US English(LANGID = 0x0409) at the minimum. |
1. -------------------IADDescriptor--------------------
2.bLength:0x08(8bytes)
3.bDescriptorType:0x0B(InterfaceAssociationDescriptor)
4.bFirstInterface:0x02(Interface2)
5.bInterfaceCount:0x02(2Interfaces)
6.bFunctionClass:0x01(Audio)
7.bFunctionSubClass:0x02(AudioStreaming)
8.bFunctionProtocol:0x00
9.iFunction:0x08(StringDescriptor8)
10.Language0x0409:"usb-audio"
11.Data(HexDump) :080B020201020008 ........
4.4UVC的IAD实例1. -------------------IADDescriptor--------------------
2.bLength:0x08(8bytes)
3.bDescriptorType:0x0B(InterfaceAssociationDescriptor)
4.bFirstInterface:0x00(Interface0)
5.bInterfaceCount:0x02(2Interfaces)
6.bFunctionClass:0x0E(Video)
7.bFunctionSubClass:0x03(VideoInterfaceCollection)
8.bFunctionProtocol:0x00(PC_PROTOCOL_UNDEFINED)
9.iFunction:0x05(StringDescriptor5)
10.Language0x0409:"usb-webcam"
11.Data(HexDump) :080B00020E030005 ........
4.5CDC的IAD实例1. -------------------IADDescriptor--------------------
2.bLength:0x08(8bytes)
3.bDescriptorType:0x0B(InterfaceAssociationDescriptor)
4.bFirstInterface:0x04(Interface4)
5.bInterfaceCount:0x02(2Interfaces)
6.bFunctionClass:0x02(CommunicationsandCDCControl)
7.bFunctionSubClass:0x02
8.bFunctionProtocol:0x01
9.iFunction:0x0A(StringDescriptor10)
10.Language0x0409:"usb-com"
11.Data(HexDump) :080B04020202010A ........
五.使用IAD时的设备描述符5.1使用IAD时的设备描述符使用IAD的设备必须使用下表中所示的示例设备描述符中定义的设备类bDeviceClass、子类bDeviceSubClass和协议代码bDeviceProtocol其他的参考USB2.0的规格书usb_20.pdf的Table 9-8. Standard Device Descriptor。这组类代码被定义为多接口功能设备类代码。
偏移 | 区域 | 大小 | 值 | 描述 |
0 | bLength | 1 | Number | 描述字节数 |
1 | bDescriptorType | 1 | Constant | 见usb_20.pdf的Table 9-8. Standard Device Descriptor |
2 | bcdUSB | 2 | BCD | |
4 | bDeviceClass | 1 | EFH | Miscellaneous Device Class |
5 | bDeviceSubClass | 1 | 02H | Common Class |
6 | bDeviceProtocol | 1 | 01H | Interface Association Descriptor |
7 | bMaxPacketSize0 | 1 | Number | 见usb_20.pdf的Table 9-8. Standard Device Descriptor |
8 | idVendor | 2 | ID | |
10 | idProduct | 2 | ID | |
12 | bcdDevice | 2 | BCD | |
14 | iManufacturer | 1 | Index | |
15 | iProduct | 1 | Index | |
16 | iSerialNumber | 1 | Index | |
17 | bNumConfigurations | 1 | Index |
使用IAD类代码的示例设备描述符
5.2使用IAD的设备描述符实例1. ----------------------DeviceDescriptor----------------------
2.bLength:0x12(18bytes)
3.bDescriptorType:0x01(DeviceDescriptor)
4.bcdUSB:0x200(USBVersion2.0)
5.bDeviceClass:0xEF(Miscellaneous)
6.bDeviceSubClass:0x02
7.bDeviceProtocol:0x01(IAD-InterfaceAssociationDescriptor)
8.bMaxPacketSize0:0x40(64bytes)
9.idVendor:0x2BC5(Orbbec3DTech.Int"lInc.)
10.idProduct:0x0529
11.bcdDevice:0x0200
12.iManufacturer:0x01(StringDescriptor1)
13.Language0x0409:"webcamvendor"
14.iProduct:0x02(StringDescriptor2)
15.Language0x0409:"webcamproduct"
16.iSerialNumber:0x03(StringDescriptor3)
17.Language0x0409:"00000000"
18.bNumConfigurations:0x01(1Configuration)
19.Data(HexDump) :12010002EF020140C52B290500020102 .......@.+).....
20. 0301 ..
六.IAD使用模型下图提供了一个示例,说明在典型的设备实现中如何使用IAD。
核心USB规范并没有指定从GetDescriptor(Configuration)请求返回的描述符集,应该如何构造的组织(位置关系)要求。
下图说明了如何组织这些描述符的推荐布局,以便主机软件可以轻松地解析它们,并明确地知道,要向每个功能驱动程序提供哪些描述符。
组织描述符集的一般方法是“按设备功能”对它们进行分组。这基本上意味着特定设备功能的所有描述符应始终位于“一起”(如图所示)。
此外,图中说明了描述符集应如何绑定到设备驱动程序。需要注意,对于类特定描述符应如何与IAD关联进行分组,可能存在特定(附加)要求。这些将在特定的设备类文档中指定,比如UVC参考《UVC 1.5 Class specification.pdf》Universal Serial Bus Device Class Definition for Video Devices Revision 1.5 August 9, 2012 P60。
(1)在示例框图的顶部,多接口功能设备类(Multi-Interface Function Device Class)设备,其设备描述符包括设备类bDeviceClass、子类bDeviceSubClashh和协议代码bDeviceProtocol,他们的值必须分别是0xEF(Misc),0x02(Common Class),0x01(IAD).
(2)接下来是配置描述符集。在高层次上,该特定配置包括三个设备功能。配置描述符和第一个接口或IAD描述符之间的任何描述符都应被视为“全局”,并传递给每个功能设备驱动程序(见示例)。
(3)第一个功能关联包括两个接口(包括所有类特定描述符和可选设置alternate settings)。第二设备功能是单个接口功能,并且不需要IAD。第三个设备功能与第一个类似。对于每个设备功能,系统软件必须向设备驱动程序提供“关联”中的所有描述符以及上述“全局”描述符。
(4)bInterface Count字段中的值必须包括预期集合中的所有接口。例如,假设一个多接口功能的接口编号为N到M。bFirstInterface字段值为N,bInterface Count的值则为(M-N)+1(因为关联中的所有接口都必须是数字连续的,所以算法(M-N)+1总是有效的)。注意,每个接口可以有零个或多个可选设置alternate settings,但可选设置不包括在bInterface Count的计算中。
(5)对于使用IAD的设备功能(如示例中的第一个和第三个功能),USB系统软件应构建“硬件标识符”,用于使用设备描述符中的idVendor和idProduct以及IAD中的bFirstInterface字段定位和加载设备驱动程序。此外,系统软件应使用IAD中的类代码字段(bFunctionClass、bFunctionSubClass、bFunctionProtocol)构建“兼容性标识符”。
使用接口关联描述符的示例设备框图
七.总结1.在一个设备功能需要关联多个接口时需要使用IAD描述符,比如UVC,UAC, 而一个配置描述符下可以使用多个IAD即实现了组合设备,比如UVC+UAC_CDC, 使用IAD时此时设备描述符的设备类bDeviceClass、子类bDeviceSubClashh和协议代码bDeviceProtocol,他们的值必须分别是0xEF(Misc),0x02(Common Class),0x01(IAD)。详见前面的实例。
2.IAD描述的内容参考前面的实例,bFunctionClass ,bFunctionSubClass,bFunctionProtocol 的值需要根据具体的设备类文档确定,可以参考前面的实例。
审核编辑黄宇
标签:
- 基于DWC2的USB驱动开发-IAD描述符详解
- 阿斯利康:安达释在华获批用于治疗成人2型糖尿病
- 首艘深远海多功能科考船开工建造 可在极区开展载人深潜科考
- 天天观速讯丨胡锡进宣布:正式进入中国股市!李大霄提建议
- 名字“改头换面” 聊天记录“阅后即焚” “笑气”等未列管物质严重侵害青少年身心健康|热点在线
- 假如我是作文(我是作文)_天天报资讯
- 每日快报!前端Vue自定义发送短信验证码弹框popup 实现剩余秒数计数 重发短信验证码
- 【世界新要闻】瓦格纳事件后,普京拜登同时发声
- 新闻1+1丨高考填报志愿,今年怎么选?
- “浙江高考分数线奇高无比”上热搜 真相来了 全球新资讯
- 湖南省银行业协会发布《2022年湖南银行业社会责任报告》彰显金融作为和使命担当 焦点消息
- 《幻兽帕鲁》帕鲁JOLTHOG介绍 2024年1月发售
- 当前速递!长沙市第四医院:参观廉洁文化教育基地 推进清廉医院建设
- 正泰电器:6月26日融资净买入2436.1万元,连续3日累计净买入4556.4万元_焦点资讯
- 鸡蛋汤的家常做法窍门是什么|今热点
- 热门:痛心!找到她了……
- 2.4万余人次警力出动!重庆警方开展夏季治安打击整治行动
- 2023无锡技师学院招生计划
- 工信部已认定“专精特新”中小企业超8万家 将实施“专精特新”中小企业上市培育工程
- 本币升值,A 股应声上涨_环球微动态
- 头条焦点:董事长回应祝贺高管女儿获高考状元 基本信息讲解
- 顺络电子等东莞投资新设智能公司-环球即时看
- 全球热门:恒勃股份:正开拓布局汽车热管理系统相关产品
- ET5 Touring引人瞩目 可蔚来还是更需要一款“Model Y”
- 新加坡—四川贸易与投资委员会举行第二十三次会议 聚焦数字经济和绿色发展 今日观点
- 北京艺美医疗美容诊所靠谱吗?可看价格收费及医生口碑信息! 世界快讯
- 金融扶持小微贵在精准高效_全球播报
- 北京一律所不招川大毕业生,不构成就业歧视?
- 国网沂源县供电公司构建废旧物资精益化挖潜机制
- 苹果内部员工已试 Vision Pro头显:重量感人|天天报道
- 国风新材:两条聚酰亚胺薄膜生产线近日投产
- 世界即时:天能股份于浙江新设电源子公司
- 环球今热点:6月27日钢厂调价信息汇总
- 神十六乘组在轨近一个月 将继续开展太空授课活动
- 马特乌斯:拜仁寻前锋需耐心&马内会离队 去沙特赚大钱?为何不呢
- 微速讯:汶川山洪泥石流已致4人遇难,搜救工作仍在进行
- 最终幻想16怎么打出最高输出连招_全球要闻
- 【全球播资讯】胞弟曝黄家驹写歌会找参考并删除创作记录:这是很尴尬很无奈的事
- 祝福朋友女儿高考祝福语 祝福朋友女儿高考祝福语怎么说
- 1291万人高考,有多少能录取?
- 【全球独家】怎样冻结表格前两行(怎样冻结表格前两行和首列)
- 当前速看:安徽长丰警方通报“男孩遭家人棍打跳下5楼”:肺部挫伤 暂无生命危险
- 筹划“卖壳”,连续一字涨停的华脉科技欲借AI风口一飞冲天?
- 连云港:购买首套房公积金贷款首付比例降至20% 世界新消息
- 当前最新:碧桂园滨江海岸是否适合养老呢,海南海口气候潮不潮湿
- 内黄县后河镇元方村:戏曲文化进乡村 消夏晚会润民心 世界通讯
- 博爱县自然资源局:批而未供和闲置土地处置任务实现时间过半任务过半-每日热文
- 21健讯Daily|复星凯特CAR-T新适应症获批;合成生物学龙头拟定增募资不超66亿元
- 苏州第三轮土拍落幕 12宗地块顺利出让
- 实控人陆续减持,业绩持续下滑 跃岭股份收到深交所年报问询函
- 工信部:2025年将力争培育100万家创新型中小企业|天天资讯
- 短讯!【OFweek维科杯】阳光能源参评最具成长力企业
- 每日信息:甘州区朝远商会第二届第一次会员大会召开
- 网经社庄帅:多点数智还需要提升销售经营能力 帮助商超拓展销售渠道
- 忆往昔——我的“南寻”(二)在浙江余姚
- 小沈阳掉下悬崖后续 50岁于月仙车祸去世
- 紫光展锐换帅:紫光国微董事长马道杰接替吴胜武任董事长
- 雄安新区助推毕业生顺利就业创业|世界视讯
- 《心灵杀手2》将更注重故事和氛围 而不是血腥和跳吓
- 环球快资讯丨金华升股东张阿玲减持14.76万股 权益变动后直接持股比例为24.09%
- 环球微速讯:巴基斯坦外交部就美印联合声明照会美外交官
- 天天微速讯:吉林省举办“6·26”国际禁毒日36周年主题日活动
- 当前短讯!昇辉科技6月27日打开涨停
- 抢时间强预警,反诈民警保护群众“钱袋子”
- 国家金融监督管理总局:今年以来银行业持续加大对重点领域和薄弱环节支持力度|滚动
- 甩牙老虎_关于甩牙老虎介绍 当前观察
- 全球热议:多家名企参与投标!阳光朗洁拿下泗阳县高新区环卫保洁及绿化管护服务项目!
- 老爸当家2(女生与老爸做了好几年)
- 老版本传奇手游十大排行榜 最火的老版本传奇手游合集|环球最资讯
- 和林微纳董秘回复: 截至2023年6月20日公司股东数为6151-环球焦点
- 理论丨张宜剑:在全面从严治党下共青团以案示警强化青年的廉洁教育培根铸魂_全球即时
- 6月27日 14:25分 我乐家居(603326)股价快速拉升 天天观速讯
- 观热点:超1200亿元!秒级审批,“深圳方案”遥遥领先
- 《第七史诗》支配者莉莉亚斯角色介绍|全球实时
- 人民币对日元汇率(2023年6月26日)_今日热议
- 中国大地上的中国智慧|广西与东盟:一湾相挽十一国,内外联动东中西
- 播报:雷电黄色预警,降雨已到西部山区!北京新一轮高温已在路上
- 今日热文:转学回老家的学校,到作为部队子弟的同学家玩,第一次被他家独栋的小洋楼惊到了…
- 每日视点!川渝联动推进共建西部金融中心取得实效
- 端午假期梧州开展夏季品牌汽车展销会 销售超2000万元
- 中证500ETF(159922)成交额超7亿元,第一大重仓股昆仑万维跌超10%丨ETF观察
- 吉林省特色旅游景区推介会在长春举办_世界观点
- 环球信息:乌海供电公司负荷管理服务中心组织学习电价政策调整文件
- 底纹在哪里设置word2010 底纹在哪里设置
- 育碧让您更好地了解刺客信条幻影回归的经典游戏玩法
- 北京发布高温黄色预警,明日大部分地区最高温将达39℃以上|环球最新
- 狼蛛鼠标开箱_这是左手鼠标狼蛛狩猎游戏鼠标评测 天天日报
- 什么是亚克力发光板材质_什么是亚克力发光板 天天热闻
- 前沿资讯!滨州高新区青田街道:党建引领铸造“强引擎” 跑出城乡居民医保扩面工作“加速度”
- 荷兰强降雨造成多地鱼类大量死亡
- 2023年四川广元中考分数线已公布-环球新消息
- qq情侣空间怎么隐藏_qq情侣空间怎么恢复
- 长沙八旬老人突然病危,家人在垃圾桶发现安眠药空瓶,医护团队紧急救治 每日视点
- 环球快播:道县四马桥镇:播撒“民生”种子打造”温度”医保
- 焦点日报:颈椎贴贴那个位置?_颈椎贴贴那个位置
- 这个夏天怎么过?知乎征集“城市发现官”|每日速读
- 【环球快播报】沉香木市场发展趋势及现状分析2023
- 【世界聚看点】800句英语短语领读_800j
- “我被变态老头在女厕所偷拍,我抓住了他!”女孩告诉橙柿互动:警方决定拘留5天,但两天后老头被放了,理由是“身体有基础病”……
- 环球今日讯!实探广州端午楼市:暴雨下房地产博览会人流量少,南沙放松限购后引来深莞客户