微软鼠标vid pid 识别usb设备分别是什么

如何获取设备的VID,PID? 1什么是VID,PID?VID的全称是Vender ID,中文意思即生产商编号。PID的全称是Product ID, 中文意思即生产商内部的产品编号。通常设备的VID, PID都是由一串字符组成如:VID_05A9&PID_2800,“-” 后面表示具体的VID, PID数值。VID, PID数值实际上是USB设备连接到Windows系统下作为唯一标识的ID。这个ID 可以作为设备的信息,而设备通过USB连接到电脑的驱动正是依赖于它。2提供VID,PID来连接Apowersoft手机管理大师?在用USB连接设备到Apowersoft手机管理大师之前,电脑上必须安装设备的驱动来识别您的设备型号,待驱动安装成功,Apowersoft手机管理大师就会立刻启动连接。通常情况下,Apowersoft手机管理大师都能准确地安装设备的驱动。但是由于设备种类太多,有些设备驱动我们可能收录不全。您的设备通过USB没与手机管理大师连接成功,原因可能就是因为我们没收录到您设备的驱动。针对于这种情况,您只需要向我们提供设备的VID, PID,Apowersoft手机管理大师就能准确地为您安装设备驱动到电脑里面,然后您就能成功连接设备到Apowersoft手机管理大师了。为了帮助我们更好的解决这个问题,真诚希望您能向我们提供您设备的VID, PID。以下是如何获取设备VID, PID的方法:3如何获取设备的VID,PID?i鼠标右击我的电脑/计算机&&&点击属性&&&设备管理器。ii连接设备到电脑&&&点击Android Phone&&&右击Android Composite ADB Interface&&&属性。iii点击详细信息&&&选择属性下面的硬件ID &&&复制值下面的任意一组数据&&&粘贴到指定的地方(如不能复制,可手动填写对应的VID, PID)。iv请将您的设备型号和对应的VID, PID提交到以下表单:非常感谢您的真诚合作!如果您想要Apowersoft公司的任何产品,请通过support#apowersoft.com(请将#换成@)邮箱联系我们,我们会给您免费发送注册码。 得分: 4.8 / 5 (共有 17 人评分) 感谢您的评分! APOWERSOFT限时免费&超级折扣最新消息 相关资源相关文章: Apowersoft Unlimited一键操作14+多媒体软件订阅
请输入Email!立即订阅 new技术支持分享点评返回顶部& 为什么我得到的USB器件的VID,PID全是CCCC?
管理员:??人数:11372小组积分:131519简介:讨论和学习USB的空间。现在USB技术已经很流行了,就像以前的串口一样。以前的电子工程师不会搞串口通信就落伍了,而现在的电子工程师如果不会搞USB通信,那就落伍了。电子工程师门,还等什么,赶紧加入小组来学习USB吧……大家也要多跟同事们推荐推荐,将我们的小组壮大起来~~~小组公告小组暂无公告.??|????|??
需要确认注册邮箱后才能下载,
楼主??[其他]?
为什么我得到的USB器件的VID,PID全是CCCC?
6年会员勋章目前未领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:137分
总积分:274分
发表于 13:48
各位,我想得到我的USB器件的VID,PID,于是我参照咱圈圈以及咱们小组一个叫yeqiping的大牛编写的程序进行修改,但是得到的值都是CCCC。大家帮我看一下程序吧,出什么问题了?先谢谢大家了!!下面是部分程序代码// UsbDeviceTestDlg.cpp : implementation file//#include "stdafx.h"#include "UsbDeviceTest.h"#include "UsbDeviceTestDlg.h"#include "intrface.h"#include "winioctl.h"#include "initguid.h"#include "setupapi.h"#include "dbt.h"typedef struct _HIDD_ATTRIBUTES {? ULONG? S? USHORT? VendorID;? USHORT? ProductID;? USHORT? VersionN} HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES;extern "C" {#include "setupapi.h"void __stdcall HidD_GetHidGuid(OUT LPGUID? HidGuid);BOOLEAN __stdcall HidD_GetAttributes(??? IN HANDLE? HidDeviceObject,??? OUT PHIDD_ATTRIBUTES? Attributes??? );}#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif//#pragma comment(lib, "ws2_32.lib")CFile mF//用来保存找到的设备路径CString MyDevPathName="";//用来保存设备是否已经找到BOOL MyDevFound=FALSE;//定义变量用来保存VID、PID、版本号DWORD MyVid,MyPid,MyP//用来保存打开设备的句柄HANDLE hMyDevHandle=INVALID_HANDLE_VALUE;?//用来注册设备通知事件用的广播接口。//要使用该结构体,需要在StdAfx.h中将增加语句#define WINVER 0x0500DEV_BROADCAST_DEVICEINTERFACE DevBroadcastDeviceI/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App About……………………//查找设备的函数。如果指定的设备找到,则设置MyDevFound为TRUE,//并将设备的路径保存在MyDevPathName中。如果指定的设备未找到,则//设置MyDevFound为FALSE。void CUsbDeviceTestDlg::FindMyDevice(){?//定义一个GUID的结构体MyGuid并初始化为我们自定义USB设备的接口类GUID。?GUID MyGuid=GUID_DEVINTERFACE_USBDRIVER; //在interface.h文件中定义了?//定义一个DEVINFO的句柄hDevInfoSet来保存获取到的设备信息集合句柄。?HDEVINFO hDevInfoS?//定义MemberIndex,表示当前搜索到第几个设备,0表示第一个设备。?DWORD MemberI?//DevInterfaceData,用来保存设备的驱动接口信息?SP_DEVICE_INTERFACE_DATA DevInterfaceD?//定义一个BOOL变量,保存函数调用是否返回成功?BOOL R?//定义一个RequiredSize的变量,用来接收需要保存详细信息的缓冲长度。?DWORD RequiredS?//定义一个指向设备详细信息的结构体指针。?PSP_DEVICE_INTERFACE_DETAIL_DATA?pDevDetailD?//初始化设备未找到?MyDevFound=FALSE;?//对DevInterfaceData结构体的cbSize初始化为结构体大小?DevInterfaceData.cbSize=sizeof(DevInterfaceData);?//根据MyGuid来获取设备信息集合。其中Flags参数设置为?//DIGCF_DEVICEINTERFACE|DIGCF_PRESENT,前者表示使用的GUID为?//接口类GUID,后者表示只列举正在使用的设备,因为我们这里只?//查找已经连接上的设备。返回的句柄保存在hDevinfo中。注意设备?//信息集合在使用完毕后,要使用函数SetupDiDestroyDeviceInfoList?//销毁,不然会造成内存泄漏。?hDevInfoSet=SetupDiGetClassDevs(&MyGuid,???????????????????????????????? NULL,?????????????????????????????? ??NULL,???????????????????????????????? DIGCF_DEVICEINTERFACE|DIGCF_PRESENT);??//然后对设备集合中每个设备进行列举,检查是否是我们要找的设备?//当找到我们指定的设备,或者设备已经查找完毕时,就退出查找。?//首先指向第一个设备,即将MemberIndex置为0。?MemberIndex=0;?while(1)?{??//调用SetupDiEnumDeviceInterfaces在设备信息集合中获取编号为??//MemberIndex的设备信息。? Result=SetupDiEnumDeviceInterfaces(hDevInfoSet,???????????????????????????????????? NULL,??? ????????????????????????????? ???&MyGuid,???? ??????????????????????????????? MemberIndex,????? ????????????????????????????? ?&DevInterfaceData);??//如果获取信息失败,则说明设备已经查找完毕,退出循环。??if(Result==FALSE)? //将MemberIndex指向下一个设备??MemberIndex++;??//如果获取信息成功,则继续获取该设备的详细信息。在获取设备??//详细信息时,需要先知道保存详细信息需要多大的缓冲区,这通过??//第一次调用函数SetupDiGetDeviceInterfaceDetail来获取。这时??//提供缓冲区和长度都为NULL的参数,并提供一个用来保存需要多大??//缓冲区的变量RequiredSize。??Result=SetupDiGetDeviceInterfaceDetail(hDevInfoSet,??????????????????????????????????????? &DevInterfaceData,????????????????????? NULL,????????????????????? NULL,????????????????????? &RequiredSize,????????????????????? NULL);??//然后,分配一个大小为RequiredSize缓冲区,用来保存设备详细信息。??pDevDetailData=(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(RequiredSize);??if(pDevDetailData==NULL) //如果内存不足,则直接返回。??{???MessageBox("内存不足!");???SetupDiDestroyDeviceInfoList(hDevInfoSet);?????}??//并设置pDevDetailData的cbSize为结构体的大小(注意只是结构体大小,??//不包括后面缓冲区)。??pDevDetailData-&cbSize=sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);??//然后再次调用SetupDiGetDeviceInterfaceDetail函数来获取设备的??//详细信息。这次调用设置使用的缓冲区以及缓冲区大小。??Result=SetupDiGetDeviceInterfaceDetail(hDevInfoSet,??????????????????????????????????????? &DevInterfaceData,????????????????????? pDevDetailData,????????????????????? RequiredSize,????????????????????? NULL,????????????????????? NULL);??//将设备路径复制出来,然后销毁刚刚申请的内存。??MyDevPathName=pDevDetailData-&DeviceP??free(pDevDetailData);? ?? ?//如果调用失败,则查找下一个设备。??if(Result==FALSE)??//否则,说明调用成功,设备已经找到??MyDevFound=TRUE; //设置设备已经找到??//找到设备,退出循环。本程序只检测一个目标设备,查找到后就退出??//查找了。如果你需要将所有的目标设备都列出来的话,可以设置一个??//数组,找到后就保存在数组中,直到所有设备都查找完毕才退出查找???}?//调用SetupDiDestroyDeviceInfoList函数销毁设备信息集合?SetupDiDestroyDeviceInfoList(hDevInfoSet);}//点击打开设备按钮的处理函数void CUsbDeviceTestDlg::OnOpenDevice() {??CString PID, VID, PVN;?BOOL R?HIDD_ATTRIBUTES DevA??//初始化设备句柄为无效句柄。?hMyDevHandle=INVALID_HANDLE_VALUE;??//显示开始查找设备?AddToInfOut("开始查找设备");?//调用FindMyDevice函数查找设备,如果找到,则设置?//MyDevFound为TRUE,并将路径保存在MyDevPathName中。?//如果未找到,则设置MyDevFound为FALSE。?FindMyDevice();????if(MyDevFound==TRUE) //如果设备找到?{? AddToInfOut("设备已经找到");? ??//则以读写方式打开设备(选择为异步访问方式),并保存其句柄。? hMyDevHandle=CreateFile(MyDevPathName, ?????????????????????? GENERIC_READ|GENERIC_WRITE,????????????????????????? FILE_SHARE_READ|FILE_SHARE_WRITE, ????????????????????????? NULL,?????????????OPEN_EXISTING,?????????????FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,?????????????NULL);??CString ERR;??ERR.Format("CreateFile函数返回值为:%x",GetLastError());??AddToInfOut(ERR);????if(hMyDevHandle!=INVALID_HANDLE_VALUE)??{???AddToInfOut("打开设备成功");????? ??? ???Result=HidD_GetAttributes(hMyDevHandle,???????????????????????????? &DevAttributes);??? CString ERR;??? ERR.Format("HidD_GetAttributes函数返回值为:%x",GetLastError());??? AddToInfOut(ERR);???? ??????????????????????????? ???VID.Format("0x%04X",DevAttributes.VendorID);???PID.Format("0x%04X",DevAttributes.ProductID);???PVN.Format("0x%04X",DevAttributes.VersionNumber);???AddToInfOut(VID);???AddToInfOut(PID);???AddToInfOut(PVN);???AddToInfOut(MyDevPathName);??}??else ??{???if(GetLastError()==0x20)AddToInfOut("打开设备失败:设备已经被打开");???else AddToInfOut("打开设备失败");???MyDevFound=FALSE; //设置为未找到状态? }?}?else //设备未找到?{??AddToInfOut("设备未找到");?}?if(MyDevFound==TRUE) //如果找到并打开成功?{??Ep8DataInSending=FALSE; //可以发送数据??Ep2DataInSending=FALSE;? //手动触发事件,让读端点8、2线程恢复运行。因为在这之前并没有调用? //读数据的函数,也就不会引起事件的产生,所以需要先手动触发一? //次事件,让读端点8、2线程恢复运行。??? SetEvent(Ep2ReadOverlapped.hEvent);??//SetEvent(Ep8ReadOverlapped.hEvent);??//显示设备的状态。??SetDlgItemText(IDC_DS,"设备已打开");? //使能各操作按钮,同时禁止打开设备按键,使能关闭设备、使能发送命令按键??GetDlgItem(IDC_OPEN_DEVICE)-&EnableWindow(FALSE);??GetDlgItem(IDC_CLOSE_DEVICE)-&EnableWindow(TRUE);? GetDlgItem(IDC_SEND_DATA)-&EnableWindow(TRUE);?}}//////////////////////////////End of function//////////////////////………………………………void CUsbDeviceTestDlg::OnShowWindow(BOOL bShow, UINT nStatus) {//?HICON hI?//获取我们自定义USB设备的接口类GUDI?GUID MyGuid=GUID_DEVINTERFACE_USBDRIVER; //在interface.h文件中定义了?CDialog::OnShowWindow(bShow, nStatus);??// TODO: Add your message handler code here?//初始化……………………?//设置DevBroadcastDeviceInterface结构体,用来注册设备改变时的通知?DevBroadcastDeviceInterface.dbcc_size=sizeof(DevBroadcastDeviceInterface);? DevBroadcastDeviceInterface.dbcc_devicetype=DBT_DEVTYP_DEVICEINTERFACE;? DevBroadcastDeviceInterface.dbcc_classguid=MyG?//注册设备改变时收到通知?RegisterDeviceNotification(m_hWnd,????????????????????? &DevBroadcastDeviceInterface,?????????????? DEVICE_NOTIFY_WINDOW_HANDLE);?FindMyDevice(); //查找一下是否是我们指定的设备已经连接了?if(MyDevFound==TRUE) //如果设备已经找到,那么显示?{??AddToInfOut("设备已连接");??SetDlgItemText(IDC_DS,"设备已连接");?}?else?{??AddToInfOut("设备未连接");??SetDlgItemText(IDC_DS,"设备未连接");?}?MyDevFound=FALSE; //仅是查找一下,所以要将MyDevFound设置回FALSE。}……………………
wjx197733 编辑于 15:04
1楼??[其他]?
Re:为什么我得到的USB器件的VID,PID全是CCCC?
6年会员勋章目前未领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:137分
总积分:274分
发表于 15:05
根据的代码改了一下程序。可以找到PID、VID等信息了。但是存在问题:1.我的PID=0x1002, VID=0x0547,但是程序找出来的是vid=0461,pid=4d22!就是说程序根本没有找到我的USB器件。这是怎么回事?我在注册表里面明明能看到我的USB器件啊!,而其在Bus Hound里面也能看到!2.而且我发现程序第一次执行函数SetupDiEnumDeviceInterfaces时成功,但是第二次执行函数SetupDiEnumDeviceInterfaces时就失败了。返回的错误值为103!真是奇怪,为什么第二次执行SetupDiEnumDeviceInterfaces就失败呢?
--- 现有 2个主题,共 1页,目前第 1页 ---??
点击,立即回复。
EDN China官方微信
扫一扫关注,获取电子新知,设计灵感
IC厂商小组
在线研讨会
赞助商链接
2016 EDN China -- Use of this website is subject to its terms of use.
京ICP备号-4 |
京公网安备37 |
新版社区已上线,旧版论坛、博客将停用
1、为防数据丢失,旧版论坛、博客不再接受发帖;
2、老用户只需重设密码,即可直接登录新平台;
3、新版博客将于8月底完美归来,敬请期待;
4、全新论坛、问答,体验升级、手机阅读更方便。&>&判断指定VID/PID的USB设备是否连接到电脑
判断指定VID/PID的USB设备是否连接到电脑
上传大小:3KB
判断指定VID PID的USB设备是否连接到电脑 可以自己指定VID或者PID 检测系统中对应的设备是否连接 VID PID的查看方法如下:
设备管理器
&对应USB设备
&属性下拉框 选择硬件ID
如果报错 将字符集 character set 改为Use Unicode Character Set 在项目属性
&常规 中&&判断指定VID PID的USB设备是否连接到电脑 可以自己指定VID或者PID 检测系统中对应的设备是否连接 VID PID的查看方法如下:
设备管理器
&对应USB设备
&属性下拉框 选择硬件ID
如果报错 将字符集 [更多]
综合评分:4
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有9条
不错的东西,学习学习。
很全,什么都有了,感谢.
好东西 但是 评论不返分 以后还平不评论呢
综合评分:
积分/C币:3
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
判断指定VID/PID的USB设备是否连接到电脑
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
判断指定VID/PID的USB设备是否连接到电脑PNP设备ID: VID = 1BCF PID = 0029是什么芯片?
全部答案(共1个回答)
制造商: Sunplus(凌阳)
芯片型号: C1165
『希望能帮到您,请点击下面的“好评”,这是对我莫大的支持,谢谢』
PnP BIOS EXTENSION:这是主板将你安装的虚拟光驱,认定为即插即用设备了,然后在BIOS中给它添加扩展相应的IRQ中端。很正常了。
u盘里的东西最好在电脑上备份一下。
“属性”(也可点击开始→设置→控制面版→系统打开),点击“硬件”标签,在设备管理器栏中,点击“设备管理器”,在弹出的窗口中便罗列出了电脑上安装的各种硬件
是一个马上检测,安装USB的程序
恺撒最著名的话就是那句“还有你吗,我的儿子”,然后就是这句“我 来,我见,我征服”(Veni,vidi,vici)。大部分人认为这是指对英国的入侵。
实际上,就...
答: TB5812 是一款恒压、恒流的原边反馈控制芯片,内置Vcbo为 800V 的功率三极管,广泛应用于小功率离线式充电器。TB5812采用多模式加QR控制,调幅控...
答: 该设备负责分离出数据信号,把信号转换为数据包,并传给Internet服务器
答: 开始,运行,cmd回车,输入ipconfig回画,看一下网关是多少,假设是192.168.0.1打开浏览器,在地址栏那边输入192.168.0.1回车,提示输入...
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备,VID 和PID都是两个字节长,其中,供应商ID(VID)由供应商向USB执行论坛申请,每个供应商的 VID是唯一的,PID由供应商自行决定,理论上来说,不同的产品、相同产品的不同型号、相同型号的不同设计的产品最好采用不同的PID,以便区别相同厂 家的不同设备。
VID和PID通常情况下有两种存储方式,第一种是主控生产商的VID和PID,存储在主控的bootcode中;第二 种是设备生产商的VID和PID,该VID和PID存储在主控外部的非易失性存储设备中(EEPROM或Flash)的设备固件中,当USB设备连接主机 时,如果固件中有设备生产商的VID和PID,会将该VID和PID报告给主机,而忽略主控生产商的VID和PID。所以理论上一个USB存储设备的 VID应该是设备生产商的VID,而不是主控生产商的VID,这两个VID应该是不同的(主控生产商自己生产的设备除外)。
由于VID 和PID重复并不会对产品的使用带来严重影响,很多USB设备生产商(山寨厂居多)为了方便,并不会向USB执行论坛申请自己的VID,而是依然沿用主控 生产商的VID或随便向产品写入VID和PID;同时,正规厂家只需要申请VID,PID由厂家自行确定,所以存在相同型号的产品,可能采用了不同的主控 (商业需要,很正常),而他们的PID是一样的,基于上述原因通过VID和PID就不能准确识别USB设备的主控型号,这个问题大家在使用USB设备的过 程中需要注意。
Windows下的USB设备信息查看工具UsbView
阅读(...) 评论()

我要回帖

更多关于 vid1f3apidefe8 下载 的文章

 

随机推荐