reactos操作系统实现(134)

 文件控制块主要用来表示一个ReactOS打开文件的对象。下面就来仔细地分析文件控制块的结构,如下:

#001  typedef struct _VFATFCB

#002  {

 

ROS的文件头部,主要包括文件流的描述和系统使用的变量。

#003    /* FCB header required by ROS/NT */

#004    FSRTL_COMMON_FCB_HEADER RFCB;

 

指向每个文件的数据段指针。

#005    SECTION_OBJECT_POINTERS SectionObjectPointers;

#006    ERESOURCE MainResource;

#007    ERESOURCE PagingIoResource;

#008    /* end FCB header required by ROS/NT */

#009 

 

这个目录或文件的目录入口指针。

#010    /* directory entry for this file or directory */

#011    DIR_ENTRY entry;

#012 

 

指向属性的入口。

#013    /* Pointer to attributes in entry */

#014    PUCHAR Attributes;

#015 

 

保存长文件名称。

#016    /* long file name, points into PathNameBuffer */

#017    UNICODE_STRING LongNameU;

#018 

 

保存短文件名称。

#019    /* short file name */

#020    UNICODE_STRING ShortNameU;

#021 

 

保存目录的名称。

#022    /* directory name, points into PathNameBuffer */

#023    UNICODE_STRING DirNameU;

#024 

 

保存路径和文件名称,最大260个字节。

#025    /* path + long file name 260 max*/

#026    UNICODE_STRING PathNameU;

#027 

 

保存路径名称。

#028    /* buffer for PathNameU */

#029    PWCHAR PathNameBuffer;

#030 

 

保存短名称。

#031    /* buffer for ShortNameU */

#032    WCHAR ShortNameBuffer[13];

#033 

 

文件控制块的引用计数。

#034    /* */

#035    LONG RefCount;

#036 

 

保存这个分卷有多少个文件控制块。

#037    /* List of FCB's for this volume */

#038    LIST_ENTRY FcbListEntry;

#039 

 

指向父文件控制块的指针。

#040    /* pointer to the parent fcb */

#041    struct _VFATFCB* parentFcb;

#042 

 

控制块的标志保存。

#043    /* Flags for the fcb */

#044    ULONG Flags;

#045 

 

关联这个文件控制块与文件对象。

#046    /* pointer to the file object which has initialized the fcb */

#047    PFILE_OBJECT FileObject;

#048 

 

短文件名称的目录索引。

#049    /* Directory index for the short name entry */

#050    ULONG dirIndex;

#051 

 

长文件名称的目录索引。

#052    /* Directory index where the long name starts */

#053    ULONG startIndex;

#054 

 

共享访问文件对象标志。

#055    /* Share access for the file object */

#056    SHARE_ACCESS FCBShareAccess;

#057 

 

打开文件次数计数。

#058    /* Incremented on IRP_MJ_CREATE, decremented on IRP_MJ_CLEANUP */

#059    ULONG OpenHandleCount;

#060 

 

路径名称和长文件名称在HASH表里的位置。

#061    /* Entry into the hash table for the path + long name */

#062    HASHENTRY Hash;

#063 

 

路径名称和短文件名称在HASH表里的位置。

#064    /* Entry into the hash table for the path + short name */

#065    HASHENTRY ShortHash;

#066 

 

文件锁住范围。

#067    /* List of byte-range locks for this file */

#068    FILE_LOCK FileLock;

#069 

 

保存最后读写的簇和位置。

#070    /*

#071     * Optimalization: caching of last read/write cluster+offset pair. Can't

#072     * be in VFATCCB because it must be reset everytime the allocated clusters

#073     * change.

#074     */

#075    FAST_MUTEX LastMutex;

#076    ULONG LastCluster;

#077    ULONG LastOffset;

#078  } VFATFCB, *PVFATFCB;

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值