阅读:976回复:2
我想比较一个文件的目录是不是相同,这样行吗?
我想比较一个文件的目录是不是和我指定的相同
第一次在驱动中做字符处理,不一定对.. 谢谢指教 if(file) { if( file->FileName.Buffer && file->Flags != FO_FILE_OPEN) { RtlCopyUnicodeString(&name,&file->FileName); DbgPrint(\"%s\",name.Buffer); count=name.Length; while((wcscmp(&name.Buffer[count],L\"\\\\\"))!=0) { count--; } length=name.Length-count; if((wcsncmp((&name)->Buffer,WRITEDIR,length-1))==0) { DbgPrint(\"MATCHING LOCK IT\"); Irp->IoStatus.Status = STATUS_ACCESS_DENIED; Irp->IoStatus.Information = 0; status = Irp->IoStatus.Status; IoCompleteRequest(Irp, IO_NO_INCREMENT); return status; } } } |
|
沙发#
发布于:2005-04-21 08:23
不是有专门的字符串比较函数嘛,为何不用呢
RtlCompareString |
|
|
板凳#
发布于:2005-04-21 09:36
谢谢了`
串比较已经OK了.. 但是出现一个新问题. 我想让\\\\JASON\\\\TEXT\\\\这个目录为只读..我是这样做的. 在CREATE中,如果!(file->Flags & FO_FILE_OPEN) 再进行判断当前文件路径的父目录是不是\\\\JASON\\\\TEXT,如果是,则结束IRP.. 结果这样一来,\\\\JASON\\\\TEXT这个目录打不开了,变成了禁止访问目录.. 请教一下,我哪个环节出错了?谢谢. 代码: if(file) { if( file->FileName.Buffer && file->DeviceObject && !(file->Flags & FO_FILE_OPEN { RtlCopyUnicodeString(&name,&file->FileName); DbgPrint(\"IN %s\",name.Buffer); count=name.Length; if((wcsncmp((&name)->Buffer,WRITEDIR,11))==0) { DbgPrint(\"MATCHING LOCK IT\"); Irp->IoStatus.Status = STATUS_ACCESS_DENIED; Irp->IoStatus.Information = 0; status = Irp->IoStatus.Status; IoCompleteRequest(Irp, IO_NO_INCREMENT); return status; } } } |
|