- 注册时间
- 2012-6-5
- 最后登录
- 2012-6-10
- 阅读权限
- 10
- 积分
- 18
- 精华
- 0
- 帖子
- 4
|
很可能是因为USB本身是用的两个通道实现读和写的,还有一个通道用于控制命令处理,有一些设备就必需使用不同的打开方式,打开三个句柄,一个用来读,一个用来写,一个用来发送控制信息,这个和你的设备以及操作系统都有关系,所以建议不管如何,都按下面的方式来打开,这个网站提供的程序只打开一个句柄,在有些时候是会出问题的。
打开控制端口应该这样打开:
hDeviceHandle = CreateFile( detailData->DevicePath,
0,
FILE_SHARE_READ | FILE_SHARE_WRITE,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
0,
NULL);
打开写入端口应该这样:
hWriteHandle = CreateFile(detailData->DevicePath, GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
0,
NULL);
打开读取端口应该这样:
hReadHandle = CreateFile(detailData->DevicePath, GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
0,
NULL);
然后你做不同操作,用不同的句柄就行了。
注意:键盘和鼠标只能用这种方式打开控制端口,并且应用程序只能打开控制端口,获取一些信息,而不能写入控制信息,并且不能以读写方式打开。 |
|