代码改变世界

Dokan:Windows和Linux文件共享新的途径

2010-02-22 09:22  dengke  阅读(11117)  评论(4编辑  收藏  举报

一、Dokan Library

  如果您想在Windows系统上创建一个新的文件系统的话,例如:改进FAT或NTFS文件系统,您就需要自己开发一个文件系统驱动。在Windows系统上开发工作在内核模式的设备驱动程序是一件极为困难的事情。使用Dokan库(Dokan Library),您可以非常方便地创建自己的文件系统而不需要编写设备驱动程序。Dokan库类似于Linux下的FUSE用户空间文件系统,但是它工作在Windows下。

  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库的好处是,它允许程序员开发更安全也更容易调试的用户空间文件系统。

二、Dokan SSHFS

  SSHFS(SSH文件系统)是一个文件系统客户端程序,使用它可以将远程服务器上的目录挂载在本地直接访问。先前的版本用于输出SFTP提供的目录和文件,而当前的版本主要用于安装有FUSE的系统上。在用户访问服务器资源的过程中,数据通过SSH加密传输,安全而高效。

  Dokan是FUSE的Windows实现,使用Dokan SSHFS可以将Linux服务器上的目录以网络盘的形式挂载到本地使用,类似于Samba。要使用Dokan SSHFS需要首先安装Dokan Library,它们可以在Dokan官方网站下载。