阅读:1329回复:2
sfilter中sfcreate例程中添加了下列代码
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; } |
|
|
沙发#
发布于:2005-04-25 09:29
(&filename)->Buffer
|
|
板凳#
发布于:2005-04-25 10:23
RtlCopyUnicodeString(&filename,&(file-FileName));
file->FileName > 128 个字符会发生什么情况 RtlFreeUnicodeString(&filename); 释放内存????谁分配了内存??? |
|