阅读:2177回复:9
怎样在驱动里面判断上层的操作是删除到回收站还是shift+del, 谢谢!
按照论坛帮助,我跟踪了这两种删除行为:
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:) |
|
沙发#
发布于:2007-11-30 22:11
删除到回收站只是重命名。
|
|
板凳#
发布于:2007-12-02 22:19
删除到回收站只是重命名+移动
|
|
地板#
发布于:2008-04-02 16:31
他知道有重命名的消息啊,FileRenameInformation。
的确会有三次,我也不知道怎么区分。 |
|
地下室#
发布于:2008-04-03 00:22
设置删除时记下,关闭时查其FileDispositionInformation不就可以了,完全是自己瞎扯没试过,错了望指教
|
|
5楼#
发布于:2008-04-03 00:26
当然想区分是不是SHIFT+DEL删文件(或右键菜单+SHIFT+删除),仅靠这个肯定不行,应用层应当需要做处理
|
|
6楼#
发布于:2008-04-04 09:01
在底层应该很难判断
不过我可以告诉你一个很土的但是有效的办法 在FileRenameInformation中判断 目标路径 是不是Recyle 如果是则认为删除到回收站操作 |
|
7楼#
发布于:2008-04-08 20:44
下午试了下 可以判断是删除到回收站还是彻底删除了
|
|
8楼#
发布于:2008-04-24 08:41
到底应该怎么在驱动中区分?
我现在只想处理彻底删除的情况。。。。 |
|
|
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 ) 看看这样可不可以 |
|