返回该小组首页 回复主题
kuanglc

kuanglc

小组等级:     E币:454  (E币换礼)

#1楼主:createfile,deviceioctl的使用问题

文章发表于:2008-08-14 12:50

createfile中的第一个参数怎么获得呢?用setup中的api列举某个类的usb可得到ID

,windows中USB的驱动GUID在REGEDIT\usb中可得到,若我插入一个带USB接口的

ARM板,没有产品id,用windows的默认驱动,那么PC是怎么用createfile,deviceioctl

与arm通信的呢?这时的ID是window的compatible ID吗?怎么获得呢?望各位赐教!!

computer00

   小组等级:    E币:13635  (E币换礼)

#2

文章发表于:2008-08-14 20:27

那要看你的设备是什么类型的了,是什么类型的就要在某个类下去查找,找到设备后,就可用createfile打开设备了。

kuanglc

   小组等级:    E币:454  (E币换礼)

#3

文章发表于:2008-08-18 19:35

你好!圈圈大哥.

我现在又遇到这样一个情况:当 我把GUID号用

DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE,0x36FC9E60,0xC465,0x11CF,0x80,0x56,0x44,0x45,0x53,0x54,0x00,0x00)

之后就出现了问题:

testUSBDlg.obj : error LNK2001: unresolved external symbol _GUID_DEVINTERFACE_USB_DEVICE
Debug/testUSB.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

我看你的例程里有两个GUID,一个是GUID_DEVINTERFACE_COMPUTER00USB,还有一个是GUID_DEVCLASS_COMPUTER00USB,那么加载驱动用的是那个GUID呢? 你说后面这个是SETUP CLASS GUID,那我枚举HUB下的所有NODE,DeviceIoControl(Hub,
                              IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME,

得到的到底是那个GUID呢?

w

computer00

   小组等级:    E币:13635  (E币换礼)

#4

文章发表于:2008-08-19 10:40

应该是接口类ID(即DEVINTERFACE),安装类ID只在安装时使用,一般访问驱动很少用它的。

具体你可以看这个函数的说明。GUID有两类,一类是安装类,另一类是接口类。分别在注册表的不同位置。在我的新书中说明了这个,嘿嘿~~~

kuanglc

   小组等级:    E币:454  (E币换礼)

#5

文章发表于:2008-08-19 12:17

谢谢!

介绍下你的新书吧!怎么买的到

呵呵

kuanglc

   小组等级:    E币:454  (E币换礼)

#6

文章发表于:2008-08-19 13:25

圈圈大哥:我怎么加了下划线后就出现这个错误啊,能帮忙解答一下吗,

e:\program files\microsoft visual studio\myprojects\testusb\iocontrol.h(14) : error C2501: '_DEFINE_GUID' : missing storage-class or type specifiers
e:\program files\microsoft visual studio\myprojects\testusb\iocontrol.h(14) : error C2078: too many initializers

我怎么在USB.INF文件中没看到有接口类啊,,只有classGuid

kuanglc

   小组等级:    E币:454  (E币换礼)

#7

文章发表于:2008-08-19 13:39

还有一个问题就是driver guid {36FC9E60-C465-11CF-8056-444553540000}\0013  ,后面这个0013是什么意思啊

谢谢圈圈大哥!

computer00

   小组等级:    E币:13635  (E币换礼)

#8

文章发表于:2008-08-19 23:05

0013我也不知道啥意思

INF文件中只有CLASS GUID的,就是安装类GUID。

而接口类GUID则在驱动程序的代码中,你可以看我以前的驱动程序包实例。

kuanglc

   小组等级:    E币:454  (E币换礼)

#9

文章发表于:2008-08-20 08:50

谢谢!

搞了半天,原来我只是获得了安装类GUID,难怪实现与USB的通信还是不行,那么是否可以通过WIN中的API函数获得驱动程序的GUID呢?我通过这个安装类GUID却能获得设备的VID和ID,这该怎么解释呢?是否可通过他两获取接口的GUID呢?

麻烦圈圈大哥帮忙解答一下!

computer00

   小组等级:    E币:13635  (E币换礼)

#10

文章发表于:2008-08-20 22:06

这个我也不清楚哦,你找找看MSDN中的相关函数看有没有,理论上是可以的,因为这些信息都记录在注册表中,人工都可以把它们弄出来,应该有相关API函数吧。

kuanglc

   小组等级:    E币:454  (E币换礼)

#11

文章发表于:2008-08-21 12:40

谢谢哦~~

我对固件程序的运行还有点迷糊:主机对USB的请求包,USB一般都得响应,响应函数对包的信息分析到底是那个事件(IN/OUT/SETUP...),端口是怎么判断这些事件的呢(例如:EP2 bulk in/out,它收到一个主机的一个包,它是怎么分析这个包是ARK,或是OUT的呢)

(还有,那么主机对USB的配置是在USB初始化并与主机连接后才发生的,0口对其响应,其他端口对主机请求是怎么识别的呢)。信息包经过USB的SIE引擎解码成什么格式呢,(我看你那有一个control_data存储控制传输得数据,调用endpoint0-out之前并未看到将数据存储到里面啊)

圈圈大哥能帮忙解答下吗!谢了

23【下一页】总共 , 当前 /

快速回复主题--如果想加入编辑器功能,建议使用 [高级回复]

您目前还不是小组成员,请先加入

回复贴子区

用户名:    您没有注册?

密码:    忘记了密码?

内容:

  • DesignDesign
  • HTMLHTML

浏览该小组的用户还看过...

所有小组精华文章