Dokan FUSE项目的目的是“fuse4win”,即实现Windows上的fuse。利用将dokan操作封装,对接fuse,方便开发者将fuse文件系统移植到Windows中。开发者可以不用考虑以Windows 方式实现(看上去不会Windows开发问题不大,因为要用实现的类似于Linux下的接口,比如读取目录fuse_operations::readdir,而直接使用Dokan则要实现DOKAN_OPERATIONS::FindFiles)。
dokany源码中包含了对于dokan fuse实现的代码以及在sample目录下的例子。
如果想编译使用Dokay中的fuse sample需要执行如下操作:
1、搭建构建环境
在VS2019中安装SDK,cmake,Specture-mitigated libs和C++生成工具。安装WDK(Windows内核相关开发,要编译dokan1.sys)。
2、编译工程
在整个vs19中将dokan.sln打开,编译工程。
编译成功之后使用管理员执行cmd,进入编译生成二进制的目录。
3、安装dokan的内核driver(dokan1.sys)
使用命令为dokanctl /i d。安装完成之后使用dokanctl.exe /v来查看内核驱动安装情况。
可能需要修改BIOS中Secure Boot选项,否则不允许安装。需要使用管理员用户权限,进入dokany目录执行"Powershell.exe -executionpolicy remotesigned -File .\cert\dokan-import.ps1" 让windows允许内核安装内核driver。
4、 编译sample中的fusexmp
内核安装成功可以编译sample中的fuse例子。提前安装cygwin和gcc/g++/make等。使用cygwin进入dokanfuse目录。
使用命令“cmake . ;make”,编译生成cygdokanfuse1.dll。cygwin等编译fusexmp需要链接该cygdokanfuse1.dll。然后编译fusexmp.c,使用命令如下:
gcc fusexmp.c -I../../dokan_fuse/include -D_FILE_OFFSET_BITS=64 -L. -lcygdokanfuse1 -o fusexmp.exe
5、运行
编译成功之后使用“fusexmp.exe l -d”即可在Windows Explorer中看到新的文件系统(l代表盘符)。
目前Dokan FUSE支持的是highlevel fuse接口(fuseexp例子即是),而不是lowlevel fuse接口。lowlevel处理的是inode,而highlevel屏蔽了inode等细节,直接以文件名称操作。









网友评论