xyfeng
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2008-07-01
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望16点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:2026回复:6

关于例子USBPort中的疑问

楼主#
更多 发布于:2003-12-31 18:41
经过折腾了半天终于调试通过了这个例子,但是发现始终SetupDiEnumDeviceInterfaces这个函数不能正确返回信息,为了进行多次查询,我将代码稍微做了下面的修改:
BOOL bGet = FALSE,bSuccess= FALSE;
while(!bGet)
{
BOOL bSuccess = SetupDiEnumDeviceInterfaces(hDevInfo,NULL,&guidHID,nIndex,
&strtInterfaceData);
if(bSuccess)
{
break;
}
else
{
DWORD dwLastError = GetLastError();
if (dwLastError == ERROR_NO_MORE_ITEMS)
{
bGet = TRUE;
}
}
nIndex++;
}
这个代码还是没有返回可用的usb设备,说是找不到可用的usb设备。
我在windows2000下面开发的,用vc6.0,不知道有没有大侠遇到过类似的问题?小弟先谢过了!!
机子上有2个usb口,我还专门试了插上一个u盘的情况,也不能正确得到usb设备可用的正确信息。
simenmc
驱动牛犊
驱动牛犊
  • 注册日期2003-12-17
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-31 23:31
这个问题有讨论过,详见
http://www.driverdevelop.com/forum/viewthread.php?tid=56497
附件也是在Win2000+VC++6下调试通过的,试试吧
附件名称/大小 下载次数 最后更新
2003-12-31_USBPort.rar (49KB)  36
程序是冷的,人是热的
xyfeng
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2008-07-01
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望16点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-03 10:53
还是老问题,SetupDiEnumDeviceInterfaces返回值失败。:(,同时发现SetupDiGetClassDevs的调用引发了ERROR_IO_PENDING错误。
simenmc
驱动牛犊
驱动牛犊
  • 注册日期2003-12-17
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-05 09:28
Mail回复了
程序是冷的,人是热的
flywill
驱动牛犊
驱动牛犊
  • 注册日期2003-05-29
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-06 13:52
To simenmc:
   请问用你的程序我这老提示:“USBPortDlg.obj : error LNK2001: unresolved external symbol _HidD_GetAttributes@8
USBPortDlg.obj : error LNK2001: unresolved external symbol _HidD_GetHidGuid@4
Debug/USBPort.exe : fatal error LNK1120: 2 unresolved externals”,该如何解决?多谢!!!
simenmc
驱动牛犊
驱动牛犊
  • 注册日期2003-12-17
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-01-06 15:31
编译程序前请先确定环境是否已设定好:
1、安装DDK。
2、VC中,在Tools|Options|Directories中加入相应的INC和LIB路径。
   以WIN2000为例:
   “Include files”中加入 C:\\NTDDK\\INC;C:\\NTDDK\\SRC\\GENERAL\\TOASTER\\INC;C:\\NTDDK\\INC\\DDK。
   “Library files”中加入 C:\\NTDDK\\LIBFRE\\I386。
3、VC中,在Project|Settings|Win32 Release中,打开Link选项卡,在Category下拉列表框中选择Input。然后在Object/library modules文本框中输入hid.lib setupapi.lib。在Addtional library path文本框中输入这些函数库文档的路径:C:\\NTDDK\\LIBFRE\\I386。
4、编译。Build|Batch Build,只选择USBPort-Win32 Release,点击Build按钮。
完成。
  
程序是冷的,人是热的
simenmc
驱动牛犊
驱动牛犊
  • 注册日期2003-12-17
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-01-08 08:25
Sorry,更正一点。
步骤2中,“Include files”路径只要输入C:\\NTDDK\\INC即可。
“C:\\NTDDK\\SRC\\GENERAL\\TOASTER\\INC;C:\\NTDDK\\INC\\DDK”可不输,那是我在调其它程序所要用到的。

快过年了,祝大家工作顺利,身体健康! :)
程序是冷的,人是热的
游客

返回顶部