Dokan is a user-mode file system library for Windows that allows applications to create custom file systems accessible as normal Windows volumes without writing kernel-mode device drivers. It provides a FUSE compatibility layer that maps FUSE operations to Dokan callbacks, enabling existing FUSE-based file systems to run natively on Windows by rebuilding the source code with Cygwin or MinGW.
The library exposes its file system API through language-specific wrappers for C, .NET, Java, Delphi, Ruby, and Python, supporting cross-language file system development. It handles file operations through thread-safe callback functions that mirror Windows API semantics, manages per-handle context data, and provides command-line tools for mounting and unmounting virtual drives programmatically. Dokan also registers a network provider component so virtual drives mounted as network shares are correctly handled by Windows Explorer.
The library supports implementing custom access control rules and security checks on file system operations entirely from user mode. It offers compilation strategies for FUSE programs on Windows using Cygwin, MSVC, and MinGW-w64 cross-compilation from Linux.