galaxay
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望129点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
阅读:2177回复:9

怎样在驱动里面判断上层的操作是删除到回收站还是shift+del, 谢谢!

楼主#
更多 发布于:2007-11-30 21:30
按照论坛帮助,我跟踪了这两种删除行为:

shift+del:  驱动会收到1次IRP_MJ_SET_INFORMATION,
                  FileDispositionInformation.DeleteFile=TRUE

del to recycle bin:  
                  驱动会收到3次IRP_MJ_SET_INFORMATION,
         第一次FileDispositionInformation.DeleteFile = TRUE;
                  第二次FileDispositionInformation.DeleteFile = FALSE;
                  第三次FileRenameInformation

这样的话,shift+del就和 del to recycle bin的第一次无法区别了,请指教!bow:)

yuanyuan
驱动大牛
驱动大牛
  • 注册日期2003-01-15
  • 最后登录2010-08-04
  • 粉丝0
  • 关注0
  • 积分1025分
  • 威望300点
  • 贡献值0点
  • 好评度232点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-11-30 22:11
删除到回收站只是重命名。
kirov
驱动牛犊
驱动牛犊
  • 注册日期2006-05-23
  • 最后登录2008-03-19
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-12-02 22:19
删除到回收站只是重命名+移动
wfhaha
驱动牛犊
驱动牛犊
  • 注册日期2007-08-07
  • 最后登录2010-04-30
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望38点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-04-02 16:31
他知道有重命名的消息啊,FileRenameInformation。
的确会有三次,我也不知道怎么区分。
eleqi
驱动小牛
驱动小牛
  • 注册日期2005-12-20
  • 最后登录2014-01-03
  • 粉丝4
  • 关注2
  • 积分172分
  • 威望1475点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-04-03 00:22
设置删除时记下,关闭时查其FileDispositionInformation不就可以了,完全是自己瞎扯没试过,错了望指教
eleqi
驱动小牛
驱动小牛
  • 注册日期2005-12-20
  • 最后登录2014-01-03
  • 粉丝4
  • 关注2
  • 积分172分
  • 威望1475点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-04-03 00:26
当然想区分是不是SHIFT+DEL删文件(或右键菜单+SHIFT+删除),仅靠这个肯定不行,应用层应当需要做处理
x-star
驱动小牛
驱动小牛
  • 注册日期2007-04-26
  • 最后登录2018-11-17
  • 粉丝0
  • 关注0
  • 积分65分
  • 威望664点
  • 贡献值1点
  • 好评度39点
  • 原创分1分
  • 专家分1分
  • 社区居民
6楼#
发布于:2008-04-04 09:01
在底层应该很难判断  
不过我可以告诉你一个很土的但是有效的办法
在FileRenameInformation中判断 目标路径 是不是Recyle   如果是则认为删除到回收站操作
x-star
驱动小牛
驱动小牛
  • 注册日期2007-04-26
  • 最后登录2018-11-17
  • 粉丝0
  • 关注0
  • 积分65分
  • 威望664点
  • 贡献值1点
  • 好评度39点
  • 原创分1分
  • 专家分1分
  • 社区居民
7楼#
发布于:2008-04-08 20:44
下午试了下  可以判断是删除到回收站还是彻底删除了
wisebo
驱动小牛
驱动小牛
  • 注册日期2006-04-13
  • 最后登录2012-07-18
  • 粉丝0
  • 关注1
  • 积分825分
  • 威望218点
  • 贡献值0点
  • 好评度80点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-04-24 08:41
到底应该怎么在驱动中区分?
我现在只想处理彻底删除的情况。。。。
I love niu
xx_qiang
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2017-02-27
  • 粉丝2
  • 关注1
  • 积分31分
  • 威望249点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2008-04-24 10:37
IRP_MJ_SET_INFORMATION,的时候
pfri = (PFILE_RENAME_INFORMATION)Irp->AssociatedIrp.SystemBuffer;
buf = pfri->FileName ;
if(_wcsnicmp(buf+6,L"\\recycler\\",10) == 0 )
看看这样可不可以
游客

返回顶部