SunMing.Cai
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2008-01-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:829回复:2

在VXD里实现改变文件请求

楼主#
更多 发布于:2002-11-25 21:56
我是在win98下用VXD拦截文件请求的。是参考filemon。
但如何改变文件请求呢?
钩子原型是FilemonHookProc(pIFSFunc pfn,int fn,
    int Drive, int ResType, int CodePage, pioreq pir )
如何在系统读文件C:\\test.txt时,改为读D:\\test.txt呢?仅仅是改个盘符而已。如果连路径都改的话,又要改那里呢?

我试过改Drive和pir->ppath,都没有效果。
我记得以前论坛里有个这个的贴子,但没有人回答呢。

究竟要怎样改才能实现呢?请大虾们指教
梦想驱动人生 ------------------------ MSN:saleonnet@hotmail.com ICQ:175745619 OQ:14892627
SunMing.Cai
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2008-01-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-26 07:31
我最主要是想在open是做的。
如果在Open时已修改了,那么这时进行Read,Write时应该也是对D:\\test进行操作吧。

站在应用程序的角度来说,要打开一个文件,都需要用
HANDLE CreateFile(LPCTSTR lpszName, DWORD fdwAccess, DWORD fdwShareMode, LPSECURITY_ATTRIBUTES lpsa, DWORD fdwCreate, DWORD fdwAttrsAndFlags, HANDLE hTemplateFile)

这时会触发文件的Open拦截,如果我将它的请求改为d:\\test,那返回的名柄是指向文件d:\\test的。那样应用程序再对它进行读写当然也是在操作d:\\test

我现在最急着需要的是这样的拦截,至于其他的Find之类暂时不需要了


请各位大虾再指教
梦想驱动人生 ------------------------ MSN:saleonnet@hotmail.com ICQ:175745619 OQ:14892627
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-25 23:03
你要在哪个里面做?

你要自己用Ring0 FileIO把ioreq里面参数添上,返回给ifsmgr,同时还要防止重入。这样做,read/write/find都可以,就是open的时候会出问题。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部