gavingood
驱动牛犊
驱动牛犊
  • 注册日期2006-01-03
  • 最后登录2008-03-24
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
阅读:5289回复:11

请教 如何在IRP_MJ_SET_INFORMATION的FileRenameInformation中判断重命名的是一个文件还是文件夹?

楼主#
更多 发布于:2007-10-28 14:18
很急。。。请各位大侠帮帮忙~
gavingood
驱动牛犊
驱动牛犊
  • 注册日期2006-01-03
  • 最后登录2008-03-24
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-10-28 16:15
我想在IRP_MJ_SET_INFORMATION中利用PsCreateSystemThread进行zwcreatefile判断是不是文件夹,但总是执行失败。请问这样做可以吗?为什么总失败?
yaolixing
驱动小牛
驱动小牛
  • 注册日期2006-06-27
  • 最后登录2010-07-15
  • 粉丝1
  • 关注0
  • 积分991分
  • 威望135点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-10-28 17:48
Re:请教 如何在IRP_MJ_SET_INFORMATION的FileRenameInf
PFILE_BOTH_DIR_INFORMATION
DirInfo=Irp-> UserBuffer;
if( FILE_ATTRIBUTE_DIRECTORY & DirInfo-> FileAttributes)
{
    //it is Directory...
}

驱网上一位高人的说法,忘记出处了。呵呵
gavingood
驱动牛犊
驱动牛犊
  • 注册日期2006-01-03
  • 最后登录2008-03-24
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-10-29 10:54
2楼的兄弟 你的办法好象不行啊 有没其他的办法?
哪位知道的提示下啊
clarence
驱动牛犊
驱动牛犊
  • 注册日期2006-05-08
  • 最后登录2009-09-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望97点
  • 贡献值0点
  • 好评度76点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-29 14:18
minifilter API : FltIsDirectory
zhsh200
驱动牛犊
驱动牛犊
  • 注册日期2005-01-27
  • 最后登录2013-07-18
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望212点
  • 贡献值1点
  • 好评度54点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-10-29 17:23
一般情况下,在IRP_MJ_SET_CREATE中判断是文件还是文件夹比较准确.

然后在IRP_MJ_SET_INFORMATION直接使用就行了
gavingood
驱动牛犊
驱动牛犊
  • 注册日期2006-01-03
  • 最后登录2008-03-24
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-10-30 08:51
谢谢zhsh200兄,我现在已经得到FileObject了。现在在IRP_MJ_SET_INFORMATION中怎么
判断是不是同一个FileObject,这个结构有没标志性的参数?
abc13271552
驱动小牛
驱动小牛
  • 注册日期2007-08-13
  • 最后登录2023-12-05
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望552点
  • 贡献值0点
  • 好评度160点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2007-10-30 08:54
Re:请教 如何在IRP_MJ_SET_INFORMATION的FileRenameInf
FCB
驱网无线,快乐无限
zhsh200
驱动牛犊
驱动牛犊
  • 注册日期2005-01-27
  • 最后登录2013-07-18
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望212点
  • 贡献值1点
  • 好评度54点
  • 原创分0分
  • 专家分0分
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.
gavingood
驱动牛犊
驱动牛犊
  • 注册日期2006-01-03
  • 最后登录2008-03-24
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-10-30 10:13
是FCB中的 NodeTypeCode吗?
gavingood
驱动牛犊
驱动牛犊
  • 注册日期2006-01-03
  • 最后登录2008-03-24
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-10-30 10:40
我在IRP_MJ_SET_INFORMATION中比较了两个FCB中的NodeTypeCode 和NodeByteSize
怎么都不一样啊?
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
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) {
人总在矛盾中徘徊。。。
游客

返回顶部