yyy_3
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2012-02-20
  • 粉丝0
  • 关注0
  • 积分54分
  • 威望305点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
阅读:1773回复:6

怎么关闭在DriverEntry()中打开的文件?

楼主#
更多 发布于:2012-02-16 18:10
在DriverEntry()中打开了一个文件, 结果在IRP_MJ_DEVICE_CONTROL的处理函数中用zwclose()关闭失败, 返回为STATUS_INVALID_HANDLE.
我的handle声明是全局的. 怎么办?
 
 
ZwCreateFile( &handle,
                                                        GENERIC_READ,
                                                        &objectAttributes,
                                                        &iostatus,
                                                        NULL,
                                                        FILE_ATTRIBUTE_NORMAL,
                                                        FILE_SHARE_READ,
                                                        FILE_OPEN,//对文件打开,如果不存在则返回错误
                                                        FILE_NON_DIRECTORY_FILE,
                                                        NULL,
                                                        0 );
 
zwclose()中说:
a handle that ZwCreateKey returns to a DriverEntry routine cannot subsequently be closed by the same driver's dispatch routines.
wangbosi
驱动牛犊
驱动牛犊
  • 注册日期2011-06-16
  • 最后登录2013-12-21
  • 粉丝1
  • 关注4
  • 积分3788分
  • 威望281点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2012-02-16 21:45
放在设备的扩展中呢?
yyy_3
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2012-02-20
  • 粉丝0
  • 关注0
  • 积分54分
  • 威望305点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2012-02-17 11:52
我试了, 放在设备扩展中也不行.
wangbosi
驱动牛犊
驱动牛犊
  • 注册日期2011-06-16
  • 最后登录2013-12-21
  • 粉丝1
  • 关注4
  • 积分3788分
  • 威望281点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2012-02-19 17:46
声明一个static的HANDLE放在.h文件中使用。初始化为NULL
yyy_3
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2012-02-20
  • 粉丝0
  • 关注0
  • 积分54分
  • 威望305点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2012-02-20 11:31
我试了, 声明为static 也不行.
yyy_3
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2012-02-20
  • 粉丝0
  • 关注0
  • 积分54分
  • 威望305点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2012-02-20 17:30
InitializeObjectAttributes() 第3个参数中加入| OBJ_KERNEL_HANDLE.

问题就解决了.
ser055
驱动牛犊
驱动牛犊
  • 注册日期2012-02-26
  • 最后登录2012-02-26
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2012-02-26 10:21
学习了,帮顶一下!
北京做网站的公司 www.deerpu.cn
游客

返回顶部