FCB 和CCB的解释:
在Windows文件系统驱动程序中,另一个数据结构是CCB(Context Control Block),它代表了一个应用程序已打开一个文件。CCB与FCB的不同之处是,FCB针对每个文件而唯一存在,而CCB针对每一次打开文件而存在。
例如,两个应用程序共享访问同一个文件,它们的CCB不同,但CCB中所指的FCB是相同的,而且,CCB中记录了相应的应用程序正在操作该文件的偏移位置。在这种情况下,每个CCB关联不同的文件对象(即FILE_OBJECT)。
kd> dt _FILE_OBJECT
nt!_FILE_OBJECT
+0x000 Type : Int2B
+0x002 Size : Int2B
+0x004 DeviceObject : Ptr32 _DEVICE_OBJECT
+0x008 Vpb : Ptr32 _VPB
+0x00c FsContext : Ptr32 Void 代表的实际对象的数据结构,如果文件对象代表一个磁盘文件,则它指向FCB(若文件支持多个数据流,则为SCB);如果文件对象代表一个磁盘目录,则它指向DCB;如果文件对象代表整个卷,则直接指向VCB。
+0x010 FsContext2 : Ptr32 Void 指向CCB结构,代表了文件对象的已打开实例。
+0x014 SectionObjectPointer : Ptr32 _SECTION_OBJECT_POINTERS
+0x018 PrivateCach