rogan321
驱动牛犊
驱动牛犊
  • 注册日期2006-06-29
  • 最后登录2010-12-01
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望105点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
阅读:1556回复:6

能在IRP_MJ_CREATE下區分目前Irp 的是目錄或文件嗎

楼主#
更多 发布于:2007-10-18 11:08
如題,如果可以該怎麼做?
找到的資料都是在IRP_MJ_DIRECTORY_CONTROL下處理...
沒有人有這種需求嗎?
zzq191
驱动中牛
驱动中牛
  • 注册日期2001-08-09
  • 最后登录2018-05-29
  • 粉丝17
  • 关注0
  • 积分1041分
  • 威望716点
  • 贡献值0点
  • 好评度318点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-10-18 11:21
BooleanFlagOn(IrpSp->Parameters.Create.Options, FILE_DIRECTORY_FILE);
QQ:416331891,承接windows下应用和驱动的开发,雅虎通:zzq191, Email:zzq191@21cn.com
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-10-18 11:39
最好是查询文件系统,因为有可能在create irp中,既没有FILE_DIRECTORY_FILE标志,也没有FILE_NON_DIRECTORY_FILE标志,这样就无法区分是打开文件还是目录了。
stevphen1
驱动牛犊
驱动牛犊
  • 注册日期2007-09-29
  • 最后登录2007-11-02
  • 粉丝0
  • 关注0
  • 积分230分
  • 威望24点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-10-18 12:15
IRP_MJ_CREATE下區分目前Irp 的是目錄或文件结果不一定准确,所以还是不要这样弄。
yaolixing
驱动小牛
驱动小牛
  • 注册日期2006-06-27
  • 最后登录2010-07-15
  • 粉丝1
  • 关注0
  • 积分991分
  • 威望135点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-29 23:39
应该在在IRP_MJ_DIRECTORY_CONTROL下做
PFILE_BOTH_DIR_INFORMATION dirInfo=Irp-> UserBuffer;

if( FILE_ATTRIBUTE_DIRECTORY & dirInfo-> FileAttributes)
{
  ///directory..
}

在IRP_MJ_CREATE中,“前人”有记载,我没做过,呵呵
IrpSp-> Parameters. Create.Options&FILE_DIRECTORY_FILE   &&
IrpSp-> Parameters. Create.FileAttributes&FILE_ATTRIBUTE_DIRECTORY

好象是目录的(FileObject-> FileName.Buffer)[wcslen(FileObject->FileName.Buffer)-1]==L'\\';
不一定准确啊。
bizhan123
驱动小牛
驱动小牛
  • 注册日期2006-12-26
  • 最后登录2012-03-19
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望166点
  • 贡献值0点
  • 好评度125点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-10-30 09:54
设置完成函数,在完成函数中判断:IrpSp-> Parameters. Create.Options&FILE_DIRECTORY_FILE
实用信息:www.infozobo.com
gzy_nj
驱动牛犊
驱动牛犊
  • 注册日期2006-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分416分
  • 威望60点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-10-30 10:22
PFSRTL_COMMON_FCB_HEADER fcb = (PFSRTL_COMMON_FCB_HEADER) FileObject->FsContext;

    if (fcb->NodeTypeCode == FAT_NTC_FCB)
        return TRUE;
    else if (fcb->NodeTypeCode == NTFS_NTC_FCB)
        return TRUE;

    return FALSE;

这样判断出来行不行?好像是从tooflat的那个加密代码里看到的,这个判断的有问题吗?
游客

返回顶部