【纯笔记】文件啊文件(1)_Returns' Station_百度空间
         写完ARK(不算文件 网络 注册表部分 就写完了 囧)那两天闲着没事儿干,大概一个xx没干正事儿

关于文件操作,今天翻腾了不少资料,发现网上的资料都是各取所需,存储这块我是一点基础也没有=。=      一头雾水了很久

大家都在搞文件系统,我慢慢研究吧,这一篇先记录一下从win32暴露的界面到FSD的过程,不涉及文件系统~

资料来源于ReactOS(0.3.10)和毛德操那本书还有其他乱七八糟的有关文件的资料,只是大概了解一下流程,不保证对,前两天看内存管理那块发现ROS里好多东西都是自己YY的...

最古老的存储介质——磁盘,物理磁盘是计算机上安装的实际磁盘,实际在我的电脑里看到的逻辑磁盘,Io初始化时 会为每一块物理磁盘创建符号链接 \??\PhsicalDriveX。 再从0号分区读取分区表,创建符号链接 X: 连接于 \Device\Harddisk0\PartitionN(N从1开始对应C:,以此类推)(ROS的源码是这样的,但vista下略有不同,不过也差不太多,用winobj可以看到Partition0又是 \Device\Harddisk0\DR0 的符号链接,Partition1是\Device\HarddiskVolume1的符号链接 以此类推)

以创建文件为例,一种是给出{jd1}路径创建,一种是给出相对路径的参照和路径名创建,略有一点不同。

CreateFile

主要工作就是翻译一下路径名 D:\Windows\WINOBJ.INI 变成 \??\D:\Windows\WINOBJ.INI 之类的操作,然后就进入内核了。 {dy}个"\"是对象根目录 \??就是找盘符的符号链接了。


NtCreateFile 直接调用 IoCreateFile

填充了一个OPEN_PACKET 然后直接调用ObReferenceObjectByName,返回文件句柄,文件对象并不插入对象目录,只能通过句柄访问。

ObReferenceObjectByName

调用ObpLookupObjectName创建或打开文件对象,调用ObpCreateHandle创建句柄后返回

ObpLookupObjectName 

1 。提供{jd1}路径:

通过 \??\X: 符号链接找到设备对象
\Device\Harddisk0\PartitionX   调用其解析函数IopParseDevice

2。相对路径:

通过相对路径的参照根目录来IopParseFile 间接调用IopParseDevice,两种方式在IopParseDevice有细微差别,不影响整体流程
IopParseDevice

IopCheckVpbMounted 检测文件卷是否安装,如否则安装并绑定。然后就向FSD发送IRP了。

VPB(volume parameter block ):文件卷参数块

typedef struct _VPB {
。。。。
struct _DEVICE_OBJECT *DeviceObject;  //指向FSD设备栈上层的过滤设备
struct _DEVICE_OBJECT *RealDevice;  //逻辑磁盘设备对象,驱动对象是\Driver\Disk
。。。。
} VPB, *PVPB;

typedef struct _FILE_OBJECT {
。。。。。。。。
PVOID FsContext;
PVOID FsContext2;

FsContext是FCB(file control block)/ SCB (stream control block) 不同文件系统不一样
FsContext2是 CCB(Context Ctrl Block )只有磁盘对象才需要

接下来就可以看文件系统了。。。

PS。国足竟然赢韩国了,不看国足大半年,今天一看视频集锦,还真吓一跳,那三个球是真漂亮,配合明显是练过的,当然韩国防守相当假,都快赶上中国了,不过比赛过程应该还是真实的,因为中国技术统计很难看。国足在我的词典里已经沦为最恶毒的骂人语言,但32年中国男性在足球上没赢过韩国了,说不高兴就太假了,不过不用像徐扬那样高呼“中国足球春天来了”,也不用像李承鹏那样乱损一同(不过人家是足球评论员,如果也跟老百姓一样傻乐估计饭碗就没了)。咱还是乐呵乐呵得了。

足球界的问题即是社会问题,想必社会各个领域也不比足球强到哪去。到了这个倒霉的年龄,对社会的认知从各个方面都会被xx,世态炎凉~大悲剧。


郑重声明:资讯 【【纯笔记】文件啊文件(1)_Returns' Station_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——