我目前正在进行一个文件过滤驱动的项目。
有文件读些操作时,我在驱动层会收到IRP, 但我此时无法判断这个读写的请求是系统产生的还是用户产生的。因为window系统本身在后台就有好多写文件的操作,
此外像Office之类的软件在编辑文件的时候也会产生零时文件
如果把这些都禁止的话,系统就会崩溃。请问有什么方法可以把不同用户的读写和这些系统的读写区分开来吗(在用户层实现即可)?PS: 个人感觉好像不太可能。
    

解决方案 »

  1.   

    什么叫无解,看你怎么做了
    系统会崩溃吗?只能是驱动做得有问题,如果一个应用程序都能导致崩溃得话 只能是你得驱动问题
    判断那个可以通过进程名还有IRP得标志是必须要判断得。
      

  2.   

    TO: zhangshengyu(Interested in:filesystem, Storage, Filter Drivers) 
    驱动本身没有问题,如果你禁止对系统盘的所有读写操作的话,那肯定会死机。
    现在的问题是我要区分出一个读写请求是由是应该允许的。
    但是这区分的标准应该是什么呢?这是最难决定的。因为系统本身在后台就有很多的读写操作。除非我能知道所有的系统读写操作,否则我根本就不能决定这个读写操作是否应该被禁止。
    另外像Office , IE 等软件自身会生成临时文件,这些读写操作都是很正常的操作,如果禁止的话,这些软件就不能正常的工作了。我说几乎无解,是因为很难拿出一个完美的解决方案(最起码我目前是不知道的)
      

  3.   

    好象是没有区分同谁发出某个IRP的方法。随便学习学习。
      

  4.   


    我刚才不是说了么
    判断那个可以通过进程名还有IRP得标志是必须要判断得。
    如果是NULL 或system 还有mess logon之类 当然就是系统的了。