cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:2135回复:8

关于USB应用程序出错

楼主#
更多 发布于:2005-01-26 11:13
我在写一个USB应用程序, 但是遇到问题了
我的代码
DWORD ReqLength;
DWORD Flags = DIGCF_PRESENT|DIGCF_DEVICEINTERFACE;
GUID CardGuid = {0x80510701, 0x1414, 0x0708, {0x20, 0x04,   0x44, 0x45, 0x53, 0x54, 0x00, 0x00}};
HDEVINFO hCard = INVALID_HANDLE_VALUE;
PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceDetailData;
SP_DEVICE_INTERFACE_DATA        DeviceInterfaceData;
DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
hCard = SetupDiGetClassDevs(&CardGuid, NULL, NULL, Flags);
if (hCard == INVALID_HANDLE_VALUE){
ShowRecv("SetupDiGetClassDevs error!\r\n");
}
else {
ShowRecv("SetupDiGetClassDevs success!\r\n");
}

for (int index = 0; index < 50; index++) {
BOOL status = SetupDiEnumDeviceInterfaces(hCard, NULL, &CardGuid, index, &DeviceInterfaceData);
CString tmp;
if (status == TRUE) {
tmp.Format("SetupDiEnumDeviceInterfaces index: %d SUCCESS!\r\n", index);
}
else {
tmp.Format("SetupDiEnumDeviceInterfaces index: %d Error! Error code = %d\r\n", index, GetLastError());
}
ShowRecv(tmp);
}
SetupDiEnumDeviceInterfaces 这里总是出错, 但是我确认了很多次guid是对的
请问各位前辈, 出错原因可能是什么呢, getlasterror得到的错误代码是259
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-26 11:33
259错误:没有可用的数据了。

就是没有你指定guid的设备或类
可能是驱动没装或设备没有连接

你的是什么设备?
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-26 11:39
我用的是一根USB数据线连接手机

但是为何SetupDiGetClassDevs是成功的呢
而且我可以用bushound来收发数据, 这个usb数据线
有几个端点, 有的端点是虚拟的串口,有的端点则是USB的, 我现在要通过这个usb端点来通信
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-26 11:41
现在我在SetupDiEnumDeviceInterfaces之前加了
SetupDiEnumDeviceInterfaces来获取设备信息
但是SetupDiEnumDeviceInterfaces也是失败的, 错误代码相同
dengjin0009
驱动牛犊
驱动牛犊
  • 注册日期2003-08-26
  • 最后登录2005-03-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-26 13:41
你是想安装该USB设备的驱动吗? 这样肯定是得不到你要得结果.
你可以先用DDK下的Setup例子中FindDevice函数,你应该就明白问题出在哪里.
邓金
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-26 13:51
驱动用的是官方的驱动
我现在想写应用程序,来收发数据的
fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-01-27 20:43
驱动用的是官方的驱动
我现在想写应用程序,来收发数据的


驱动用的是官方的! 那么你的手机就是作为U盘用了,可能还是GUID不对,你用这个{0x53f56307L, 0xb6bf, 0x11d0, {0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b}};
可以找到你电脑上的所用的硬盘,当然也可以找到你的U盘。然后用ReadFile(),writeFile()读写即可。至于用设备自己的GUID为什么不行,我也至今没弄清楚,还请高手指点一二。
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-28 10:28
我说的是官方是指手机厂商提供的驱动程序, 而不是系统提供的
quicker
驱动牛犊
驱动牛犊
  • 注册日期2004-07-18
  • 最后登录2005-08-08
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-28 16:57
你把你的Flags 重设一下,也许这个错误会消失
生命不能承受之轻!
游客

返回顶部