flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:2362回复:5

vxd中的文件保护--还是不行

楼主#
更多 发布于:2001-06-08 11:02
各位高手,我在测试ifshook时,防止DEL可以,但防止打开还是不行。
按以下:
case IFSFN_OPEN :
BOOL IS=IsMyFile();//伪代码
if(IS){
pir->ir_error=DWORD(5); //ir_Error=表示没错!!!!!
return(5);
}
else
{
p=(*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir);
return (p);
}
.........
哈哈,还是要蓝屏!
请各位指点
补充:我是用98DDK编译的

[flyfox 编辑于 2001-06-08 11:05]
一剑西来,天外飞仙
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-11 20:51
肯定是伪码的实现有问题.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-12 08:49
我的代码大致如下:请多指教。
char FileNm[400];
……
case IFSFN_OPEN:
        
              if(AlreadyInside==1 || Init==1)
                {
                          break;
                }
                AlreadyInside=1;
                if((nDrive & 0xFF) != 0xFF){
                        FileNm[0]= nDrive + '@';
                        FileNm[1]=':';
                        iLen=2;
                        iLen+=UniToBCSPath(&FileNm[2], pir->ir_ppath->pp_elements, MAX_PATH, BCS_OEM);
                }
                else{
                        iLen=FormNetPath(FileNm, pir);
                }
                if(iLen>=0){
                        FileNm[iLen]=0;
                        iLen++;
                }
            
                iRet=IsMyFile(FileNm);
                if(iRet)
                {
                 pir->ir_error=5;           return(5);

                // AlreadyInside=0;
                // return 1;
                 Out_Debug_String("open yet\n\r");
                }
                else
                {
                p=(*PrevHook)(pfn, fn, Drive, ResType,    CodePage, pir);
                return (p);
                }
……
//case……
//定义IsMyFile
int IsMyFile(char *FileNm)
{
if(strstr(FileNm,"TEST.TXT"))return 1;
else return 0;
}

一剑西来,天外飞仙
julien
驱动牛犊
驱动牛犊
  • 注册日期2001-06-08
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-06-15 20:13
老兄能否把你的 防del的那部分帖上来看看
想说爱你不容易
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-06-16 08:31
防DEL即是直接return 0;
如下:
        case IFSFN_DELETE:
                if(AlreadyInside==1 || Init==1)
                        break;
                 AlreadyInside=1;
                if((nDrive & 0xFF) != 0xFF){
                        FileNm[0]= nDrive + '@';
                        FileNm[1]=':';
                        iLen=2;
                        iLen+=UniToBCSPath(&FileNm[2], pir->ir_ppath->pp_elements, MAX_PATH, BCS_OEM);
                }
                else{
                        iLen=FormNetPath(FileNm, pir);
                }
                if(iLen>=0){
                        FileNm[iLen]=0;
                        iLen++;
                }
                iRet=IsMyFile(FileNm);
                if(iRet)return 0;
一剑西来,天外飞仙
julien
驱动牛犊
驱动牛犊
  • 注册日期2001-06-08
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-06-20 19:24
IFSFN_DELETE
好象不能处理 del 的消息,文件一样会被删到回收站中,这其间会收到一个 IFSFN_RENAM 消息,如果同时按住 SHIFT 键才会收到 IFSFN_DELETE 消息。
想说爱你不容易
游客

返回顶部