主题 : 有谁做过WINCE下USB设备访问没? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 30597
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2010-10-19
最后登录: 2010-10-25
楼主  发表于: 2010-10-19 10:58

 有谁做过WINCE下USB设备访问没?

最近买了块MINI2440,照着用户手册,能顺利进行内核裁剪,轻松就能将wince5.00装起来,中间遇到一些小问题,但在手册上都找到了相关解决方法,整个上手时间在2天左右搞定了,对友善之臂的资料完整性赞一个!
我购买这块开发板主要是用来了解USB驱动的。我们有一款USB设备,想接入到开发板中,通过编写接口程序,应用程序能正常访问该USB设备。
我们的USB设备有两款,一款是HID类设备,一款是MASSSTORAGE类。
将HID类设备插入开发板,注册表中未能找到相关信息,是不是没有该驱动?看了一下自己所选的WINCE内核,HID只包含了鼠标键盘。
将MASSSTORAGE类设备(类似U盘)插入开发板,注册表中能找到DSK1,于是尝试用CREATFILE创建了设备句柄,当设备处于连接状态时,能返回句柄,当断开连接时,返回INVALID_HANDLE_VALUE,表明句柄创建没问题。然后我再尝试DeviceIoControl时,通过GetLastError返回50,得知请求不支持。参看LED等驱动,于是又通过RETAILMSG查看串口输出信息,修改了一通C:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\USB\CLASS\STORAGE\DISK\SCSI2下的几个文件,但没发现哪个文件被调用。
在此向有经验的大大们请教一下,USB MASSSTORAGE类设备驱动程序如果要调试,我们应该跟踪哪个文件,HID类设备不是标准鼠标、键盘,是不是要另外写驱动?
级别: 新手上路
UID: 33154
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2010-11-26
最后登录: 2010-12-22
1楼  发表于: 2010-12-10 12:46
楼主还在不在?我也做了一个HID设备的驱动,实现了XXX_Write和XXX_Read,XXX_Write中使用了
DWORD dwErr = pHidSap->pHidFuncs->lpSetReport(pHidSap->hDevice, HidP_Output,//HidP_Feature,
        (char*)pBuffer, BufferLength, dwTimeout);
这个貌似没什么问题,没有报错,发送字节也是成功的。
但是在XXX_Read中使用
DWORD dwErr = pHidSap->pHidFuncs->lpGetReport(pHidSap->hDevice, HidP_Input,
        (char*)pBuffer, BufferLength, &ReceivedLength, dwTimeout);
得到的数据不是我的设备应该返回的数据,而是之前lpSetReport的buffer的内容。
很困惑。不知道楼主能否赐教