lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1787回复:14

郁闷阿,如何判断是copy和粘贴?

楼主#
更多 发布于:2004-11-19 11:17
我原来的想法是在read中记录是我要的文件名,在write中比较,可问题是,同名文件呢?还有就是小文件,在一开始read,过一段时间粘贴时,就没了?各位老大,给个建议阿,指点一下思路就行。

我要做的是记录用户复制和粘贴的时间和文件名,包括在cmd下的copy。
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-19 13:20
不清楚你想说什么
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-19 14:35
我原来的想法是在irp_mj_read中记录是我要的文件名,在irp_mj_write中比较是否为我给记录的文件名,可问题是,如果有同名文件操作(当然同名文件在进行别的谢操作),还有就是小文件,在一开始copy,过一段时间粘贴时,不就没了吗?各位老大,给个建议阿,指点一下思路就行。

我要实现的功能是记录用户复制和粘贴的时间和文件名,包括在cmd下的copy。

tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-19 15:36
可问题是,如果有同名文件操作(当然同名文件在进行别的谢操作),还有就是小文件,在一开始copy,过一段时间粘贴时,不就没了吗?
===============================

什么东西没了啊,小文件为什么就会没了,同名文件是不是就是同一个文件
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-19 16:16
我原来想是这样作的:
1。在irp_mj_read中得到文件名,当然是跟我要监视的文件名一致的
   保存在一数组中,做一个标记。
2。在irp_mj_write中比较,如是,到数组中比较,如已经有标记,
   我认为是粘贴。
3。在close中,根据标记来清除数组中文件名。

问题:
1。文件比较小时,粘贴操作时,无irp_mj_read.
2。如果执行上面3后,进行多个操作时,特别是同名文件(文件名相同,但不是同一个文件)操作时,我已经清除了数组中的文件名了。我就无法判断该粘贴操作了(当然文件比较大时,没问题)。
3.在cmd下,进行类似如下copy时没法判断:copy 1.txt c:\test\23.txt

谢谢tooflat的关注。
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-19 17:03
在内核里面无法达到你的目的,恐怕应用层也不行,粘贴这个操作不好定义,通常是读取剪贴板里面的内容再写到其他地方,但是读和写没有必然的联系
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-19 17:08
是啊,郁闷中,谢谢了。tooflat.

我在osr上,他们说在read和writed
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-22 09:02
老大们谁能在给点建设性的意见,让小弟参考参考。谢谢了。
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-11-24 08:49
还是没结果。给分了。
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-11-24 09:47
copy和粘贴

在底层文件系统,没这2个概念

只有 rename,delete 可以查阅 <<nt file system>>
www.xDrv.com
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-11-24 10:25
TO 9楼:
   谢谢你,newkey。nt file sytem我也看了。对你说的这些,我也了解。可问题是,我得监视和控制用户的copy和粘贴操作。
   你有好的建议吗?能与我共享吗?
   谢谢了。
   ps:你的ifs能用了吗?我在下2003的,可慢呢。我如能下完,ftp给你。
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-11-24 11:07
监视和控制用户的copy和粘贴操作是否可以通过系统调用hook来实现呢?直接hook Native API可否?
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-11-24 13:40
在驱动层实现这个好像太繁琐了吧。
windows应该提供了一定的接口吧,因为你在资源浏览器中点击右键弹出的快捷菜单中,系统会自动判断是否可以粘贴,而粘贴本身就是生成一个新的文件,这个文件与所拷贝的文件内容相同。因此,我认为是否可以通过在生成一个新的文件对象时,检查系统的某个标志位来判断粘贴。
呵呵,但愿我的想法不是错的。 :) :) :)
在交流中学习。。。
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-11-24 14:58
感谢cicada和fslife的关注。
我主要还要考虑到用户在cmd进行copy操作和一些应用程序带来的操作。
这贴的分数已结了。希望大家能继续讨论。完毕后,我将另起一贴给分。
yaolixing
驱动小牛
驱动小牛
  • 注册日期2006-06-27
  • 最后登录2010-07-15
  • 粉丝1
  • 关注0
  • 积分991分
  • 威望135点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-03-07 10:46
内核虽然没有复制的标志,但一个复制的动作与正常的读文件是有微妙的区别的。
等你发现了这个区别后,在create()例程中拦截即可。
游客

返回顶部