torresliang
驱动牛犊
驱动牛犊
  • 注册日期2010-03-15
  • 最后登录2010-05-18
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:5696回复:2

SetupDiEnumDeviceInterfaces 之GUID问题

楼主#
更多 发布于:2010-03-19 10:06
小弟初学USB驱动,现在遇到一个问题想请问个位大侠
问题描述如下:

  手上目前有两块不同的开发板(简称板1,板2),两块板均成熟可用USB经验证亦无问题。PC端的驱动和应用程序为网上下载之DNW V0.5源码,在测试的时候发现在源代码中的如下函数:
SetupDiEnumDeviceInterfaces (...,pGuid,.)
使用其查找设备的时候,使用原GUID {8E120C45-4968-4188-BA19-9A82361C8FA8}的时候可以成功找到设备,但是其驱动在注册表里面注册的Class GUID却是{36FC9E60-C465-11CF-8056-444553540000}。将GUID换成{36FC9E60-C465-11CF-8056-444553540000}后不能找到设备。请问源码中的GUID和注册表中的Class GUID 有何区别?如果SetupDiEnumDeviceInterfaces 参数之GUID非注册表之ClassGUID,它又从何得来?忘高手指点一二,不胜感激。
                    
                    
掉进技术这个陷阱里,泡都没见着一个就淹死了。
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-03-21 16:56
Class GUID指的是设备类的GUID,象USB设备的驱动一般都归于USB设备类之下,这在设备管理器中可以看到。

而SetupDiEnumDeviceInterfaces中使用的则是设备驱动中通过IoRegisterDeviceInterface调用来登记的设备接口类。然后,应用程序可以通过这个接口类来查找和打开设备。

这两者之间其实没有什么关系。
torresliang
驱动牛犊
驱动牛犊
  • 注册日期2010-03-15
  • 最后登录2010-05-18
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-03-22 13:22
非常感谢jally76的帮助
掉进技术这个陷阱里,泡都没见着一个就淹死了。
游客

返回顶部