阅读:5289回复:11
请教 如何在IRP_MJ_SET_INFORMATION的FileRenameInformation中判断重命名的是一个文件还是文件夹?
很急。。。请各位大侠帮帮忙~
|
|
沙发#
发布于:2007-10-28 16:15
我想在IRP_MJ_SET_INFORMATION中利用PsCreateSystemThread进行zwcreatefile判断是不是文件夹,但总是执行失败。请问这样做可以吗?为什么总失败?
|
|
板凳#
发布于:2007-10-28 17:48
Re:请教 如何在IRP_MJ_SET_INFORMATION的FileRenameInf
PFILE_BOTH_DIR_INFORMATIONDirInfo=Irp-> UserBuffer; if( FILE_ATTRIBUTE_DIRECTORY & DirInfo-> FileAttributes) { //it is Directory... } 驱网上一位高人的说法,忘记出处了。呵呵 |
|
地板#
发布于:2007-10-29 10:54
2楼的兄弟 你的办法好象不行啊 有没其他的办法?
哪位知道的提示下啊 ![]() |
|
地下室#
发布于:2007-10-29 14:18
minifilter API : FltIsDirectory
|
|
5楼#
发布于:2007-10-29 17:23
一般情况下,在IRP_MJ_SET_CREATE中判断是文件还是文件夹比较准确.
然后在IRP_MJ_SET_INFORMATION直接使用就行了 |
|
6楼#
发布于:2007-10-30 08:51
谢谢zhsh200兄,我现在已经得到FileObject了。现在在IRP_MJ_SET_INFORMATION中怎么
判断是不是同一个FileObject,这个结构有没标志性的参数? |
|
7楼#
发布于:2007-10-30 08:54
Re:请教 如何在IRP_MJ_SET_INFORMATION的FileRenameInf
FCB |
|
|
8楼#
发布于:2007-10-30 09:06
PFSRTL_COMMON_FCB_HEADER FCB = NULL;
PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLocation( Irp ); FCB = (PFSRTL_COMMON_FCB_HEADER)irpSp->FileObject->FsContext; 该FCB 是能够唯一标识每个FileObject. |
|
9楼#
发布于:2007-10-30 10:13
是FCB中的 NodeTypeCode吗?
|
|
10楼#
发布于:2007-10-30 10:40
我在IRP_MJ_SET_INFORMATION中比较了两个FCB中的NodeTypeCode 和NodeByteSize
怎么都不一样啊? |
|
11楼#
发布于:2007-10-30 11:26
Re:请教 如何在IRP_MJ_SET_INFORMATION的FileRenameInf
FileSpy中IRP_MJ_SET_INFORMATION派遣例程中有代码啊,要先搜再问!status = SpyQueryInformationFile( devExt->NLExtHeader.AttachedToDeviceObject, pIrpStack->FileObject, &standardInformation, sizeof( standardInformation ), FileStandardInformation, NULL ); if (!NT_SUCCESS(status)) { // // We can't tell if it is a file or directory, assume // the worst case and handle it like a directory. // InterlockedIncrement( &devExt->AllContextsTemporary ); SpyDeleteAllContexts( deviceObject ); SetFlag( RecordList->Flags, RLFL_IS_DIRECTORY ); break; } if (standardInformation.Directory) { |
|
|