alwaysrun
驱动小牛
驱动小牛
  • 注册日期2006-06-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1059分
  • 威望752点
  • 贡献值1点
  • 好评度98点
  • 原创分0分
  • 专家分0分
阅读:2889回复:13

如何判断创建的是文件还是文件夹

楼主#
更多 发布于:2008-06-20 16:45
在Create中如何判断要创建的是文件,还是文件夹?
请大牛指教,谢谢!
一颗平常的心!
qianjunhua
驱动小牛
驱动小牛
  • 注册日期2003-12-08
  • 最后登录2013-02-27
  • 粉丝11
  • 关注0
  • 积分712分
  • 威望1052点
  • 贡献值1点
  • 好评度57点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-06-21 22:55
FILE_DIRECTORY_FILE
alwaysrun
驱动小牛
驱动小牛
  • 注册日期2006-06-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1059分
  • 威望752点
  • 贡献值1点
  • 好评度98点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-06-23 09:28
多谢了,在Create.Options中判断吧。
但是还是不是很准确啊。如一个文件夹dir

如果打开时文件名为dir则不一定设FILE_DIRECTORY_FILE,有时设有时不设
如果为dir\则设FILE_DIRECTORY_FILE

不知是我的判断问题呢,还是哪儿出问题了,望指教,谢谢!!
一颗平常的心!
x-star
驱动小牛
驱动小牛
  • 注册日期2007-04-26
  • 最后登录2018-11-17
  • 粉丝0
  • 关注0
  • 积分65分
  • 威望664点
  • 贡献值1点
  • 好评度39点
  • 原创分1分
  • 专家分1分
  • 社区居民
地板#
发布于:2008-06-23 18:40
在完成全程中判断
zjwsns
驱动牛犊
驱动牛犊
  • 注册日期2007-12-23
  • 最后登录2009-09-12
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望37点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-06-24 12:15
我也碰到同样的问题,在Create.Options中判断确实不准确.
在完全全程中如何判断呀,望不吝赐教
yanzihao
驱动牛犊
驱动牛犊
  • 注册日期2008-06-24
  • 最后登录2008-06-24
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-06-24 15:51
是不是用JAVA啊 用JAVA的话可以这样判断 判断文件就   file.isFile() 判断目录 file.isDirectory()
ciggar
驱动牛犊
驱动牛犊
  • 注册日期2004-03-01
  • 最后登录2010-06-02
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望48点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-06-24 23:07
很久以前做过这样的东西,记得好像是根据某个值是03还是05来判断是文件还是文件夹,时间长了记不清楚了,我建议你看一下DDK中和文件系统相关的头文件
chenyn
驱动牛犊
驱动牛犊
  • 注册日期2006-07-02
  • 最后登录2011-11-18
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分1分
7楼#
发布于:2009-10-20 09:48
在Create.Options中判断不准确阿
nth2say
驱动牛犊
驱动牛犊
  • 注册日期2009-10-09
  • 最后登录2014-03-17
  • 粉丝1
  • 关注0
  • 积分28分
  • 威望281点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2009-10-20 10:24
FileObject->FsContext->NodeTypeCode
phenix_xiaomei
驱动小牛
驱动小牛
  • 注册日期2002-03-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望57点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2009-10-20 14:53
或者用FltQueryInformationFile
yandong_8212
驱动小牛
驱动小牛
  • 注册日期2006-07-28
  • 最后登录2011-02-11
  • 粉丝0
  • 关注0
  • 积分1046分
  • 威望464点
  • 贡献值1点
  • 好评度173点
  • 原创分0分
  • 专家分1分
10楼#
发布于:2009-10-21 10:26
SpyQueryInformationFile 去FileSpy例子里面找吧
商务MSN:YanDong_8212@163.com
alwaysrun
驱动小牛
驱动小牛
  • 注册日期2006-06-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1059分
  • 威望752点
  • 贡献值1点
  • 好评度98点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2009-10-23 10:30
好多热心人啊,谢了各位。在完成中找是比较准确的,只是有时候感觉在那儿判断有点晚了
一颗平常的心!
qianjunhua
驱动小牛
驱动小牛
  • 注册日期2003-12-08
  • 最后登录2013-02-27
  • 粉丝11
  • 关注0
  • 积分712分
  • 威望1052点
  • 贡献值1点
  • 好评度57点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2009-10-23 11:26
你是想知道 要打开的还是要创建的?首先 到下面去找这个要打开的Object 存在否?如果存在的话 就能知道是DIR或者FILE,如果不存在嘛,那么文件系统只有在create的时候指定DIRECOTRY的属性的时候,才会明确创建一个文件夹!如果没有 那么就是要求创建文件了! 所以 在create Complete 之前来做这个,是有明确的可行的方式的!
felix_lzq
驱动牛犊
驱动牛犊
  • 注册日期2008-08-08
  • 最后登录2010-10-16
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望52点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2009-10-23 16:36
只能在完成后判断,在打开文件之前判断的都不准确,Create.Options中如果指名是文件夹,只能代表CreateFile期望打开的是文件夹,期望的当然不准。
调用下层完成后调以下代码判断:
         ntStatus =
            KAVQueryInformationFile(
            DeviceObject ,
            FileObject ,
            &FileInfo ,
            sizeof(FILE_STANDARD_INFORMATION) ,
            FileStandardInformation ,
            NULL
            );

        if (!NT_SUCCESS(ntStatus))
        {
            break;
        }

        if (FileInfo.Directory)
                                         {
                                                   //do something...
                                         }
游客

返回顶部