Dokany
什么是 Dokan
当你想在 Windows 上创建一个新的文件系统,而不是 FAT 或 NTFS,你需要开发一个文件系统驱动程序。开发一个能在 windows 内核模式下工作的设备驱动程序是非常有技术含量的。通过使用 Dokan,你可以非常容易地创建自己的文件系统,而无需编写设备驱动程序。Dokan 类似于 FUSE(用户空间中的 Linux 文件系统),但在 Windows 上工作。此外,Dokany 还包含了一个 FUSE wrapper,可以帮助你在不改变 FUSE 文件系统的情况下进行移植。
什么是 Dokany
Dokany 是 Dokan 0.6.0 的一个分叉,它修复了 Bug,清理了变更历史,并更新为使用最新的工具构建。
因为原来的 Dokan Legacy(<0.6.0)项目已经不再维护。
从 0.8.0 版本开始,dokany 破坏了与 dokan API 的兼容性。更多信息请参见 选择一个版本。
每一个版本都会提供签名的 x86 /x64 / ARM / ARM64 驱动。
许可证
Dokan 包含 LGPL 和 MIT 授权的程序。
- 用户模式库 (dokan1.dll) LGPL
- 驱动(dokan1.sys)LGPL
- 网络库(dokannp1.dll) LGPL
- fuse 库(dokanfuse1.dll) LGPL
- 安装程序(DokanSetup.exe)LGPL
- 控制程序 (dokanctl.exe) MIT
- 例子(mirror.exe / memfs.exe) MIT
详情请查看许可证文件。
- LGPL license.lgpl.txt
- MIT license.mit.txt
您可以从 https://dokan-dev.github.io 获取源文件。
环境
Dokan 可工作于以下操作系统:
- Windows Server 2019
- Windows Server 2016
- Windows 10
- Windows Server 2012 R2
- Windows 8.1
- Windows Server 2012
- Windows 8
- Windows Server 2008 R2 SP1
- Windows 7 SP1
平台
- x86
- x64
- ARM
- ARM64
它是如何工作的
Dokan 库包含一个用户模式的 DLL(dokan1.dll)和一个内核模式的文件系统驱动(dokan1.sys)。一旦安装了 Dokan 文件系统驱动,就可以创建文件系统,这些文件系统在 Windows 中可以看作是普通的文件系统。使用 Dokan 库创建文件系统的应用程序称为文件系统应用程序。
来自用户程序的文件操作请求(如:CreateFile、ReadFile、WriteFile......)将被发送到 Windows I/O 子系统(在内核模式下运行),随后该子系统将把请求转发给 Dokan 文件系统驱动程序(dokan1.sys)。通过使用 Dokan 用户模式库(dokan1.dll)提供的函数,文件系统应用程序能够向文件系统驱动程序注册回调函数。文件系统驱动程序将调用这些回调例程,以响应收到的请求。回调例程的结果将被发回给用户程序。
例如,当 Windows 资源管理器请求打开一个目录时,带方向选项的 CreateFile 请求将被发送到 Dokan 文件系统驱动程序,驱动程序将调用文件系统应用程序提供的 CreateFile 回调。这个例程的结果作为 CreateFile 请求的响应被送回给 Windows Explorer。因此,Dokan 文件系统驱动程序充当了用户程序和文件系统应用程序之间的代理。这种方法的优点是它允许程序员在用户模式下开发文件系统,既安全又易于调试。
要了解更多关于 Dokan 文件系统开发的信息,请参见 API 文档和 例子,尤其是 dokan_memfs。
构建
简单来说,下载并安装 Visual Studio 2019,在安装过程中选择 Windows 10 SDK 组件或从工具菜单中选择并安装 WDK 10。
详情请看 构建页面。
安装
手动安装,请参阅 installation page。
贡献
你想让道馆变得更好吗?贡献吧
学习代码并在 GitHub repository 中提出您的修改建议。
在 GitHub 问题跟踪器 上检测缺陷并报告。
在 Github Discussions 或 Google 讨论组 上提问和回答问题。