阅读:2610回复:7
在IRP_MJ_READ和IPR_MJ_WRITE时,如何判断FileObject是文件还是目录?
请问,
在IRP_MJ_READ和IPR_MJ_WRITE时,如何判断FileObject是文件还是目录? 谢谢! |
|
最新喜欢:![]()
|
沙发#
发布于:2003-01-27 10:05
FileObject->FsContext中的前面两个字节表示是文件还是目录
对于FAT文件系统,OX503表示是目录,NTFS文件系统好象是0X703表示目录,0X705表示是文件,不是记得很清楚了。自己跟到文件驱动里面去看一下。 |
|
板凳#
发布于:2003-01-30 11:47
接楼上的:
FCB_COMMON_HEADER,好像是错的,自已机器不再身边。你查一下。 FCB_COMMON_HEADER p = (FCB_COMMON_HEADER*) FileObject->FsContext; if(p->Nodetype == FCB_FCB) //文件 FCB_DCD //目录 还有根目录, |
|
地板#
发布于:2003-01-30 11:56
FsContext某些值没有公开定义,就是说可能随文件系统的不同而变化。建议在IRP_MJ_CREATE中判断是否是目录
|
|
地下室#
发布于:2003-01-30 12:22
IRP_MJ_CRATE是可以,但那些Create.option在irp_mj_read等IRP是无效的。
而FileObject->FsContext我还没有发现有问题。 :D |
|
5楼#
发布于:2003-01-30 12:23
且第一个值是公开的,参考fastfat源代码。fastfat就是用这种方式区分你是文件或目录。
|
|
6楼#
发布于:2003-01-30 12:53
这就是问题所在,fastfat是fat 文件系统的示例代码(不是真正Windows使用的代码),里面的值
#define FAT_NTC_DATA_HEADER ((NODE_TYPE_CODE)0x0500) #define FAT_NTC_VCB ((NODE_TYPE_CODE)0x0501) #define FAT_NTC_FCB ((NODE_TYPE_CODE)0x0502) #define FAT_NTC_DCB ((NODE_TYPE_CODE)0x0503) #define FAT_NTC_ROOT_DCB ((NODE_TYPE_CODE)0x0504) #define FAT_NTC_CCB ((NODE_TYPE_CODE)0x0507) #define FAT_NTC_IRP_CONTEXT ((NODE_TYPE_CODE)0x0508) 都是FASTFAT FSD自行定义的,注意前面有FAT_ |
|
7楼#
发布于:2003-01-30 15:23
谢谢大家的关照,我目前是采用了VCMFC和VCMFC楼上的建议,Coolice的建议是完美的,但是,我短期内可能搞不定。
|
|
|