kgdiwss
驱动牛犊
驱动牛犊
  • 注册日期2005-11-30
  • 最后登录2009-02-11
  • 粉丝2
  • 关注0
  • 积分655分
  • 威望89点
  • 贡献值0点
  • 好评度65点
  • 原创分0分
  • 专家分0分
阅读:1746回复:1

DeviceIoControl的时候错误为:ERROR_NOACCESS

楼主#
更多 发布于:2008-01-15 18:53

我要把应用层创建的事件传给NDIS驱动,
IOCTL定义:

// 引用应用程序创建的事件
#define IO_REFERENCE_EVENT                  \
    CTL_CODE(FSCTL_PTUSERIO_BASE,            \
                0x812, METHOD_NEITHER, FILE_ANY_ACCESS)

应用层这样和驱动交互:
BOOL bRet = ::DeviceIoControl(hAdapter,
    IO_REFERENCE_EVENT,
    (LPVOID)hEvent,
    sizeof(HANDLE),
    NULL,
    0,
    &dwBytes,
    NULL);

问题:
如果把DeviceIoControl中的 sizeof(HANDLE) 改成0,用softICE跟踪发现程序运行到了NDIS驱动中的IO_REFERENCE_EVENT指令处理过程中,如果第四个参数的不用0,而用 sizeof(HANDLE) ,从softICE跟的结果看就根本不运行驱动中的IOCTL处理函数,用GetLastError得到998L,意思是ERROR_NOACCESS,请问是什么原因?
bbs.80dnst.com -- 驱动/逆向
Pegram
论坛版主
论坛版主
  • 注册日期2005-12-03
  • 最后登录2013-08-23
  • 粉丝13
  • 关注5
  • 积分1333分
  • 威望4717点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分2分
沙发#
发布于:2008-01-16 09:25
METHOD_NEITHER改成METHOD_BUFFER或者METHOD_IN_DIRECT
《寒江独钓》与《竹林蹊径》的合作作者。精通USB开发,设计了CY001 USB驱动套件(http://bbs.driverdevelop.com/read.php?tid-119314.html)。
游客

返回顶部