在Windows系统上开发工作在内核模式的设备驱动程序是一件极为困难的事情。使用Dokan库(Dokan Library),您可以非常方便地创建自己的文件系统而不需要编写设备驱动程序。Dokan库类似于Linux下的FUSE用户空间文件系统,但是它工作在Windows下,其与FUSE(Linux user mode file system)类似。常见的场合貌似在游戏《坦克世界》的插件安装里。
Dokan库:
Dokan库包含一个用户模式的DLL文件(dokan.dll)以及一个内核模式文件系统驱动(dokan.sys)。Dokan文件系统驱动一旦安装,您就可以在Windows上创建和普通文件系统一样的文件系统。使用Dokan库创建的文件系统的应用程序称为文件系统应用程序。
来自用户程序的文件操作请求(例如:CreateFile,ReadFile,WriteFile等)将被发送的 Windows输入/输出子系统(运行在内核模式),请求之后将被发送到Dokan文件系统驱动程序(dokan.sys)。通过使用Dokan用户模式库文件(dokan.dll)提供的函数,文件系统应用程序能够向文件系统驱动程序注册回调函数。
文件系统驱动程序在收到请求后调用注册的回调函数例程来响应请求。回调函数例程的处理结果将返回给用户程序。例如:当Windows资源管理器请求创建一个目录,请求“OpenDirectory”将发送到 Dokan文件系统驱动程序,然后驱动程序将调用文件系统应用程序提供的OpenDirectory回调函数例程。
函数例程的处理结果作为 OpenDirectory请求的响应返回给Windows资源浏览器。如此一来,Dokan文件系统驱动程序就如同一个位于用户程序和文件系统程序之间的代理程序。使用Dokan库的好处是,它允许程序员开发更安全也更容易调试的用户空间文件系统。