When you want to create a new file system on Windows, for example to improve FAT or NTFS, you need to develope a file system driver. Developing a device driver that works in kernel mode on windows is extremley difficult.
By using Dokan library, you can create your own file systems very easily without writing device driver. Dokan Library is similar to FUSE (Linux user mode file system) but works on Windows.
The Dokan library provides a user mode DLL (dokan.dll) and a kernel mode file system driver (dokan.sys). Once Dokan file system driver is installed, you can create file systems which can be seen as normal file systems in Windows. The application that creates file systems using Dokan library is called File system application.
File operation requests from user programs (e.g., CreateFile, ReadFile, WriteFile,
...) will be sent to the Windows I/O subsystem (runs in kernel mode) which will subsequently forward the requests to the Dokan file system driver (dokan.sys). By using functions provided by the Dokan user mode library (dokan.dll), file system applications are able to register callback functions to the file system driver.
The file system driver will invoke these callback routines in order to response to the requests it received. The results of the callback routines will be sent back to the user program. For example, when Windows Explorer requests to open a directory, the OpenDirectory request will be sent to Dokan file system driver and the driver will invoke the OpenDirectory callback provided by the file system application.
The results of this routine are sent back to Windows Explorer as the response to the OpenDirectory request. Therefore, the Dokan file system driver acts as a proxy between user programs and file system applications. The advantage of this approach is that it allows programmers to develop file systems in user mode which is safe and easy to debug.
What's New in This Release: [ read full changelog ]
· fixed memory leak in DokanCompleteCreate (dokan.sys) when Create was failed
· fixed memory leak in DokanCOmpleteClose (dokan.sys) when memory allocation was failed
· fixed file pointer adjustment in Read
· fixed thread handles leak in DokanMain