phoenix_luei
驱动牛犊
驱动牛犊
  • 注册日期2007-10-26
  • 最后登录2007-11-22
  • 粉丝0
  • 关注0
  • 积分120分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
阅读:1597回复:5

请大侠们过来看看!!“无法进入驱动程序进行读操作”

楼主#
更多 发布于:2007-11-02 15:21
if (!DeviceIoControl(m_hDevice,
    PCI9054_IOCTL_800_ReadBase0,
     bufInput,
                      2*sizeof(USHORT),    
           bufOutput,
                     IOCTL_OUTBUF_SIZE*sizeof(USHORT),    
    &nOutput,
    NULL))
{
    MessageBox("无法进入驱动程序进行读操作","错误",MB_OK|MB_ICONHAND);
}

应用程序执行到上述代码的时候,就提示“无法进入驱动程序进行读操作”,请大侠们看看是不是
DeviceIoControl使用错误?


其中PCI9054_IOCTL_800_ReadBase0是在PCI9054ioctl.h中定义的,其全文如下:
#ifndef __PCI9054ioctl__h_
#define __PCI9054ioctl__h_

#define PCI9054_IOCTL_800_ReadBase0 CTL_CODE(FILE_DEVICE_UNKNOWN, 0xE8200000, METHOD_IN_DIRECT, FILE_READ_DATA)
#define PCI9054_IOCTL_801_WriteBase0 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_OUT_DIRECT, FILE_WRITE_DATA)
#define PCI9054_IOCTL_802_ReadBase2 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x802, METHOD_IN_DIRECT, FILE_READ_DATA)
#define PCI9054_IOCTL_803_WriteBase2 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x803, METHOD_OUT_DIRECT, FILE_WRITE_DATA)
Nothing is Impossible!
phoenix_luei
驱动牛犊
驱动牛犊
  • 注册日期2007-10-26
  • 最后登录2007-11-22
  • 粉丝0
  • 关注0
  • 积分120分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-11-02 15:23
PCI设备工作正常,驱动也没有问题,调试通过了

卡在这两三天了,郁闷
新手上路,请多指点!
Nothing is Impossible!
phoenix_luei
驱动牛犊
驱动牛犊
  • 注册日期2007-10-26
  • 最后登录2007-11-22
  • 粉丝0
  • 关注0
  • 积分120分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-11-07 10:21
达人指点一二啊~~~~~~~
Nothing is Impossible!
king00star
驱动牛犊
驱动牛犊
  • 注册日期2006-08-17
  • 最后登录2014-04-19
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望92点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-11-07 11:24
你这里的“无法进入驱动程序进行读操作”是你自己打印的,没用
调完DeviceIoControl后,再调用GetLastError函数获取详细的错误码,查查MSDN看看具体原因
是不是m_hDevice句柄CreateFile时传的参数不对?
liily
驱动牛犊
驱动牛犊
  • 注册日期2006-08-29
  • 最后登录2008-09-20
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-11-07 17:18
里面的代码是自己添加的吗?我自己添加的代码也出了这个问题,自动生成的是好的,为什么?
你的问题解决了吗?
thanfur
驱动牛犊
驱动牛犊
  • 注册日期2007-10-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望268点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-11-10 15:27
#define PCI9054_IOCTL_800_ReadBase0 CTL_CODE(FILE_DEVICE_UNKNOWN, 0xE8200000, METHOD_IN_DIRECT, FILE_READ_DATA)


是不是这句错了 ,CTL_CODE默认是从0x800开始的,其他的部分是留给系统的,你把0xE8200000改成0x800试下
游客

返回顶部