阅读:1987回复:11
修改filemon怎样能实现文件路径重定位
那位大侠提示一下,我想在IRP_MJ_CREATE下修改文件路径,但不知道该修改哪里,fileobject?
|
|
沙发#
发布于:2004-08-07 16:54
UP
|
|
|
板凳#
发布于:2004-08-08 18:15
Up
|
|
地板#
发布于:2004-08-10 10:19
UPUPUPUPUPUPUPUPUPUPUPUPUPPUPPU
|
|
|
地下室#
发布于:2004-08-14 00:03
应该是IrpSp里面吧?!
|
|
|
5楼#
发布于:2004-08-20 04:14
????
UPUPUPUPUP |
|
|
6楼#
发布于:2004-08-20 04:14
UPUPUPUPUPUPUPUPPUPUP
|
|
|
7楼#
发布于:2004-08-20 04:15
UPUPUPUPUPUPUPUPUPUPUP
|
|
|
8楼#
发布于:2004-08-20 04:15
UPUPUPUPUPUPUPUPUP
|
|
|
9楼#
发布于:2004-08-20 09:15
如果是在同一个盘符下,可以直接修改IrpSp->FileObject->FileName.Buffer,然后象普通的Irp一样处理。
如果是在不同盘符下,除了第一步外,还需要返回STATUS_REPARSE,让文件系统重新处理,如下: WCHAR *newfile = NULL; if (IrpSp->FileObject->FileName.Buffer != NULL) { ExFreePool(IrpSp->FileObject->FileName.Buffer); } newfile = ExAllocatePoolWithTag(PagedPool, 13 * sizeof(WCHAR), 'XXXX'); wcscpy(newfile, L"??f:1.txt"); RtlInitUnicodeString(&IrpSp->FileObject->FileName, newfile); IrpSp->FileObject->RelatedFileObject = NULL; Irp->IoStatus.Information = IO_REPARSE; Irp->IoStatus.Status = STATUS_REPARSE; IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_REPARSE |
|
10楼#
发布于:2004-08-20 09:16
上面的文件路径有问题,反斜杠被过滤掉了
|
|
11楼#
发布于:2004-08-20 13:57
谢谢tooflat的帮助,感谢万分,给分
|
|
|