【Windows开发】使用Windows官方版FUSE开发文件系统

本文仅分析技术信息,不提供代码!

1.用户态实现文件系统

1. Linux上要自主实现文件系统一般会采用fuse,主要是能在用户态进程直接开发实现,不需要开发内核驱动模块,这部分官方示例代码和开源代码太多了,也没什么好讲的,另外MAC上也有fuse开源项目。

2. Windows也有开源项目dokany,再加上其提供的fuse兼容层,基本上和fuse使用相同,而文件系统方面也有开源的fatfs可以使用。

但是,dokany仍然需要安装驱动,这意味着需要数字签名,对小公司和个人开发者来讲成本略高,当然使用官方提供的已签名版本也可以,只是仍然存在不可控的风险。

2.Windows官方提供的FUSE模块

而2018年的Win10更新上微软新增了一个叫ProjFS模块,本质上是GVFS项目的衍生,微软收购GitHub后开发新版本git工具,原本的git是基于命令或者简单的GUI界面操作,总体上不是很直观,所以微软基于VFS和git云存储,开始了一个GVFS项目,旨在将git工程文件直接映射到微软的资源管理器中(Explorer),GVFS(即VFS for Git)其中的一个模块叫GvFlt,是一个文件系统过滤驱动(dokany的驱动也是这一类),到了2018年,GvFlt独立出来一开始内部叫Primes,简称为Windows投影文件系统,后来改名叫ProjFS,即Windows Projected File System的简称,所以Windows 10 version 1809以上才支持。

总体上可以简单认为,ProjFS模块相当于dokany的微软版,当然细节上很多是围绕Git仓库的管理实现的,所以在使用上和fuse类还是有差距,且在开发过程的理解上可能fuse或dokany更直观一些,但这毕竟是官方原生支持,相对更方便,没有驱动方面的顾虑。

posted on 2023-04-10 11:40  峋山隐修会  阅读(585)  评论(0编辑  收藏  举报

导航