sodier
驱动牛犊
驱动牛犊
  • 注册日期2005-03-11
  • 最后登录2005-08-20
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1329回复:2

sfilter中sfcreate例程中添加了下列代码

楼主#
更多 发布于:2005-04-23 21:01
sfCreate例程中,添加下列代码后,目的是为了拦截文件名中带有特定字符串的irp包,禁止对这类文件的访问,不但没有实现拦截,而且偶尔开机的时候会蓝屏,并且
DbgPrint(\"my print1:%ws\",file->FileName.Buffer);//打印文件名
DbgPrint(\"my print2:%ws\",filename.Buffer);//不能打印出文件名

代码如下:

NTSTATUS status;
PIO_STACK_LOCATION irpSp=IoGetCurrentIrpStackLocation(Irp);
PFILE_OBJECT file = irpSp->FileObject;
UNICODE_STRING filename;
WCHAR namebuffer[128];

filename.Buffer=namebuffer;
RtlZeroMemory(filename.Buffer,128);
RtlCopyUnicodeString(&filename,&(file-FileName));
DbgPrint(\"my print1:%ws\",file->FileName.Buffer);
DbgPrint(\"my print2:%ws\",filename.Buffer);
if(wcsstr(filename.Buffer,L\"out\")!=NULL)
{
    RtlFreeUnicodeString(&filename);
    Irp->IoStatus.Status = STATUS_ACCESS_DENIED;
    Irp->IoStatus.Information = 0;
    IoCompleteRequest(Irp,IO_NO_INCREMENT);
    return STATUS_ACCESS_DENIED;
}
没有比较更长的路 没有比人更高的峰
zhjie374
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2012-01-17
  • 粉丝2
  • 关注1
  • 积分17分
  • 威望144点
  • 贡献值1点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-25 09:29
(&filename)->Buffer
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-25 10:23
RtlCopyUnicodeString(&filename,&(file-FileName));
file->FileName > 128 个字符会发生什么情况


RtlFreeUnicodeString(&filename);
释放内存????谁分配了内存???
游客

返回顶部