bjxbt
驱动牛犊
驱动牛犊
  • 注册日期2002-05-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1522回复:1

我在做文件读取拦截时出现蓝屏?代码如下

楼主#
更多 发布于:2003-02-15 14:05
我在做文件读取拦截时出现蓝屏,代码如下:
ppIFSFileHookFunc PrevHook;

PUCHAR Aa1Device::ConvertPath( int drive, path_t ppath, PUCHAR fullpathname )
{
int i = 0;
_QWORD result;
if( drive != 0xFF ) {
fullpathname[0] = drive+\'A\'-1;
fullpathname[1] = \':\';
i = 2;
}
UniToBCSPath( &fullpathname, ppath->pp_elements, 260 , BCS_WANSI, &result );
return( fullpathname );
}

int _cdecl MyIfsHook(pIFSFunc pfn, int fn, int Drive, int ResType,
int CodePage, pioreq pir)
{
int retvar,i;
unsigned char fullpathname[260];
switch(fn)
{
case IFSFN_READ:
{
retvar=(*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir);
Aa1Device::ConvertPath( Drive, pir->ir_ppath, fullpathname );
return TRUE;//retvar;
}
default:
return (*PrevHook)(pfn, fn, Drive, ResType, CodePage, pir);
}
}

BOOL Aa1Device::OnSysDynamicDeviceInit()
{
PrevHook = IFSMgr_InstallFileSystemApiHook(MyIfsHook);
if (PrevHook==NULL)
       return FALSE;
else
 return TRUE;
}

BOOL Aa1Device::OnSysDynamicDeviceExit()
{
IFSMgr_RemoveFileSystemApiHook(MyIfsHook);
return TRUE;
}

DWORD Aa1Device::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)
{
return 0;
}



ring3代码如下:
handle=::CreateFile(\"\\\\\\\\.\\\\aa1.vxd\",0,0,0,CREATE_NEW,FILE_FLAG_DELETE_ON_CLOSE,NULL);
if (handle==INVALID_HANDLE_VALUE)
AfxMessageBox(\"error\");
yuxuehu
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2008-04-03
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-19 21:41
求路径时出错了
读和写的时候不能直接用这个办法
给你一个非常有名的程序,虽然有点繁琐,不过还可以。
98是用Vtoolsd开发的
附件名称/大小 下载次数 最后更新
2003-02-19_filemon.rar (510KB)  16
游客

返回顶部