fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2760回复:13

请教,为何打开USB的鼠标、键盘设备会失败

楼主#
更多 发布于:2004-10-11 15:31
SetupDiGetClassDevs
SetupDiEnumDeviceInterfaces
SetupDiGetInterfaceDeviceDetail
这几个调用时都没问题,但是一调用CreateFile,就会失败,错误是Access is denied.(拒绝访问)。
请问,应该不是HID类设备不允许打开吧?困惑中...

[编辑 -  10/11/04 by  fgf1014]
chufuxuan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-11 23:11
// 开放与设备的通信
HANDLE hCom = CreateFile(m_strPath, GENERIC_WRITE,
FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("无法打开通信端口"));
SetupDiDestroyDeviceInfoList(hDevInfo);
return;
}
这样修改就可以了
fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-12 18:00
谢谢!CreateFile是可以了,但是WriteFile会返回False,而readFile还是拒绝访问,这又是怎么回事。请大侠赐教!!!
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-12 18:40
// 开放与设备的通信
HANDLE hCom = CreateFile(m_strPath, GENERIC_WRITE,
FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("无法打开通信端口"));
SetupDiDestroyDeviceInfoList(hDevInfo);
return;
}
这样修改就可以了


都加上吗
GENERIC_WRITE|GENERIC_READ
FILE_SHARE_READ|FILE_SHARE_WRITE

学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-10-12 20:16
如果都加上,CreateFile就出错了,错误是Access is denied.(拒绝访问)。
WinterDay
驱动牛犊
驱动牛犊
  • 注册日期2004-08-01
  • 最后登录2004-10-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-10-12 21:15
请教搂主,你的SetupDiEnumDeviceInterfaces中使用的guid是怎么获得的,我在该函数中使用HidD_GetHidGuid()获得的guid,结果总是返回ERROR_NO_MORE_ITEMS。多谢
chufuxuan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-10-12 22:41
我现在的情况跟fgf1014的一样,也是Write会失败。
fgf1014,你write的数据是什么?
fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-10-13 09:18
请教搂主,你的SetupDiEnumDeviceInterfaces中使用的guid是怎么获得的,我在该函数中使用HidD_GetHidGuid()获得的guid,结果总是返回ERROR_NO_MORE_ITEMS。多谢

在注册表里找的
fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-10-13 09:41
我现在的情况跟fgf1014的一样,也是Write会失败。
fgf1014,你write的数据是什么?


BYTE bits[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0xFF, 0x00, };
for( int i=0; i<sizeof(bits)/sizeof(BYTE); i++)
{
if( !WriteFile( hDevice, &bits, 1, &dwLen, NULL))
{
ShowErrorText();
}
}

疑问:为什么CreateFile时不能设置GENERIC_READ
呢?
chufuxuan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-10-13 09:53
那跟我的做法差不多,我也不知道为什么不能设READ :(
chufuxuan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-10-13 12:00
我找到一段话,可能跟这个问题有关,供大家参考:
Why do I receive "Access denied" when attempting to access my HID?

Windows 2000 and Windows XP have exclusive read/write access to HIDs that are configured as a system keyboards or mice. An application can obtain a handle to a system keyboard or mouse by not requesting READ or WRITE access with CreateFile. Communications can then use HidD_SetFeature and HidD_GetFeature (assuming the device supports Feature reports).

fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-10-13 13:16
你是在哪里找到的,是DDK之类的文档中吗?看这段话的意思应该是不能用这种方法访问了。
chufuxuan
驱动牛犊
驱动牛犊
  • 注册日期2003-01-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-10-13 13:30
就在这个网址,你也看看,有什么成果别忘了说一下:D :D
http://www.lvr.com/hidpage.htm
fgf1014
驱动牛犊
驱动牛犊
  • 注册日期2003-02-22
  • 最后登录2005-10-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-10-13 17:01
多谢!!!
以后多交流!!!
游客

返回顶部