首页 > 解决方案 > 为什么在 Windows 文件系统中需要 LCB(链接控制块)?

问题描述

您有一个包含 VCB 的 VDO,由 FS 创建,它通过 VPB 安装到 volmgr 卷 PDO。每个 VCB 链接到根 DCB 并包含一个表,该表通过 FileID 为卷上的每个 FCB 建立索引。

每个 FCB 都有一个指向节对象指针的指针并包含其子 FCB 的列表,并且每个 FCB 都由为文件打开的流的 SCB 指向。每个 FCB 都包含一个 MCB,它似乎用于将文件偏移量转换为逻辑扇区。

每个 FileObject 都包含一个指向为文件对象定义的文件系统 CCB 的指针。文件对象指向与其关联的文件流的 SCB。它还指向节对象指针,该指针指向文件(最终是 PPTE)的图像和数据部分,并指向共享缓存映射(最终是 VACB)。

BCB 与缓存管理器 VACB 有关,BCB 用于“固定”,我认为这是锁定页面,但我不知道细节,任何信息都会很好。我认为 VACB 的缓存管理器 PTE 是读写的,而不是进程具有的只读 / CoW 映射,我不确定当缓存管理器写入进程中作为 CoW 打开的页面时会发生什么(我认为缓存管理器使用数据部分 PPTE(而不是图像部分),因此对于 CoW 图像部分来说这不是问题)。

我不明白 LCB 适合在哪里或为什么需要它。我认为硬链接可能意味着每个 FCB 有多个 LCB,因此有理由将文件名与 FCB 分开;似乎还有一种情况,文件名有一个 LCB 而不是 FCB——我不知道这种情况的意义是什么。

标签: windowsfilesystemsntfswindows-kernel

解决方案


推荐阅读