在Windows系統(tǒng)上開發(fā)工作在內核模式的設備驅動程序是一件極為困難的事情。使用Dokan庫(Dokan Library),您可以非常方便地創(chuàng)建自己的文件系統(tǒng)而不需要編寫設備驅動程序。Dokan庫類似于Linux下的FUSE用戶空間文件系統(tǒng),但是它工作在Windows下,其與FUSE(Linux user mode file system)類似。常見的場合貌似在游戲《坦克世界》的插件安裝里。
Dokan庫:
Dokan庫包含一個用戶模式的DLL文件(dokan.dll)以及一個內核模式文件系統(tǒng)驅動(dokan.sys)。Dokan文件系統(tǒng)驅動一旦安裝,您就可以在Windows上創(chuàng)建和普通文件系統(tǒng)一樣的文件系統(tǒng)。使用Dokan庫創(chuàng)建的文件系統(tǒng)的應用程序稱為文件系統(tǒng)應用程序。
來自用戶程序的文件操作請求(例如:CreateFile,ReadFile,WriteFile等)將被發(fā)送的 Windows輸入/輸出子系統(tǒng)(運行在內核模式),請求之后將被發(fā)送到Dokan文件系統(tǒng)驅動程序(dokan.sys)。通過使用Dokan用戶模式庫文件(dokan.dll)提供的函數,文件系統(tǒng)應用程序能夠向文件系統(tǒng)驅動程序注冊回調函數。
文件系統(tǒng)驅動程序在收到請求后調用注冊的回調函數例程來響應請求。回調函數例程的處理結果將返回給用戶程序。例如:當Windows資源管理器請求創(chuàng)建一個目錄,請求“OpenDirectory”將發(fā)送到 Dokan文件系統(tǒng)驅動程序,然后驅動程序將調用文件系統(tǒng)應用程序提供的OpenDirectory回調函數例程。
函數例程的處理結果作為 OpenDirectory請求的響應返回給Windows資源瀏覽器。如此一來,Dokan文件系統(tǒng)驅動程序就如同一個位于用戶程序和文件系統(tǒng)程序之間的代理程序。使用Dokan庫的好處是,它允許程序員開發(fā)更安全也更容易調試的用戶空間文件系統(tǒng)。