WinFsp·Windows文件系统代理
查看我的新内核驱动程序项目 WinSpd。
WinFsp 是 Windows 计算机的一组软件组件,允许创建用户模式文件系统。从这个意义上讲,它类似于 FUSE(用户空间中的文件系统),后者在类似 UNIX 的计算机上提供相同的功能。
好处
稳定性
WinFsp 非常稳定。没有已知的内核模式崩溃,它也不会遭受资源泄漏或类似问题的困扰。WinFsp 的这种稳定性归功于其设计和严格的测试体系。
性能
WinFsp 胜过竞争对手,并且在许多情况下的性能都优于 NTFS。了解有关其性能的更多信息。
兼容性
WinFsp 致力于与 NTFS 的兼容性和文件系统的正确性。有关完整的详细信息,请参见兼容性文档。
易于使用
WinFsp 具有易于使用但功能全面的 API。
- 这个简单的教程说明了如何构建文件系统。
- 请查阅 API 参考以进行本机开发。
- 包括用于托管开发的 .NET 层。参见 src/dotnet。
- 包括 FUSE 2.8 兼容性层:fuse/fuse.h
- 包括 FUSE 3.2 兼容性层:fuse3/fuse.h
其他福利
- 每个版本上都提供了签名驱动程序。
- 根据 GPLv3 许可提供,但免费/自由和开源软件有特殊例外。
要了解有关WinFsp的更多信息,请访问其网站:http://www.secfs.net/winfsp/
项目组织
项目源代码的组织如下:
build/VStudio:WinFsp解决方案和项目文件。 doc:WinFsp设计文档和其他文档可在此处找到。 ext:外部依赖项。 ext/tlib:最初来自secfs(安全云文件系统)项目的小型测试库。 ext/test:指向secfs.test项目的子模块,该项目包含许多用于测试 Windows 和 POSIX 文件系统的工具。
inc:公共头文件。 inc/fuse:FUSE 兼容性层的公共头。 inc/fuse3:FUSE3 兼容性层的公共头。 inc/winfsp:WinFsp API的公共头。
src:WinFsp 的源代码。 src/dll:WinFsp DLL 的源代码。 src/dll/fuse:FUSE 兼容性层的源代码。 src/dll/fuse3:FUSE3 兼容性层的源代码。 src/dotnet:.NET层的源代码。 src/fsptool:fsptool命令行实用程序的源代码。 src/ku:可以在内核或用户模式下使用的源代码。 src/launcher:启动器服务和launchctl实用程序的源代码。 src/sys:WinFsp FSD 的源代码。
opt/cygfuse:Cygwin 软件包的 FUSE 的源代码。 tst:示例文件系统和测试套件的源代码。 tst/winfsp-tests:WinFsp测试套件。
tools:用于构建和测试 WinFsp 的各种工具。
构建和运行
为了构建 WinFsp,您将需要以下内容:
- Visual Studio 2015-2019
- Windows 驱动程序工具包(WDK)10
- 注意:在 Visual Studio 2015 中使用最新的 WDK(Windows 10.0.18362.1)时,可能会收到有关缺少任务 ValidateNTTargetVersion的错误。解决方法是编辑文件 \Program Files (x86)\Windows Kits\10\build\WindowsDriver.Common.targets 并修改ValidateNTTargetVersion 的 UsingTask 行,如下所示:
- Wix toolset
要完全构建 WinFsp(包括安装程序),必须使用 tools\build.bat。默认情况下,它会构建一个 Release 版本,但是您可以使用以下语法选择 Debug 或 Release 配置:
tools\build.bat CONFIGURATION
如果您自己构建驱动程序,它将不会被签名,Windows 将拒绝加载它,除非您启用“testsigning”。您可以使用命令 bcdedit.exe -set testsigning on 启用 “testsigning”。有关更多信息,请参阅此文档。
WinFsp 设计为在 Windows 7 及更高版本上运行。已在以下平台上进行了测试:
- Windows 7 Enterprise
- Windows 8 Pro
- Windows Server 2012
- Windows 10 Pro
- Windows Server 2016
如何帮助
我正在以下领域寻求帮助:
- 如果您有在 FUSE 上运行的文件系统,请考虑将其移植到 WinFsp。 WinFsp 具有本机 API,但也具有 FUSE(高级)API。
- 如果您使用的是 C/C++ 以外的语言(例如 Delphi,Java 等),并且对移植/包装 WinFsp 感兴趣,我希望收到您的来信。
- GitHub 存储库中列出了许多未解决的问题。其中许多要求具备 Windows 内核模式的知识,并了解 WinFsp 的内部原理,因此它们不适合胆小的人使用。
在任何情况下,我都可以提供想法和/或支持。
在哪里讨论
如果您想讨论 WinFsp,现在有两个选择:
许可
WinFsp 在 GPLv3 许可下可用,但 Free/Libre 和开源软件有特殊例外。也可以提供商业许可证。请联系 Bill Zissimopoulos <billziss at navimatics.com> 了解更多详细信息。
(The first version translated by vz on 2020.08.08)