# dokan-dev/dokany

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/dokan-dev-dokany).**

5,784 stars · 697 forks · C

## Links

- GitHub: https://github.com/dokan-dev/dokany
- Homepage: http://dokan-dev.github.io
- awesome-repositories: https://awesome-repositories.com/repository/dokan-dev-dokany.md

## Topics

`c` `createfile` `device-driver` `dll` `dokan` `dokan-library` `driver` `drivers` `filesystem` `filesystem-library` `fuse` `fuse-wrapper` `kernel-mode` `sys` `userland` `windows`

## Description

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.

## Tags

### Operating Systems & Systems Programming

- [User-Mode File System Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/asynchronous-i-o-libraries/asynchronous-file-system-drivers/hybrid-kernel-user-drivers/user-mode-file-system-drivers.md) — Runs a file system entirely in user space by intercepting kernel I/O requests through a loadable driver that forwards them to a user-mode library.
- [Virtual Drive Mount Commands](https://awesome-repositories.com/f/operating-systems-systems-programming/disk-and-mount-management/command-line-disk-utilities/virtual-drive-mount-commands.md) — Remove a mounted virtual drive programmatically or via a command-line tool to restore the system state. ([source](https://dokan-dev.github.io/dokany-doc/html/))
- [Callback-Based](https://awesome-repositories.com/f/operating-systems-systems-programming/filesystem-apis/callback-based.md) — Maps each file system operation to a user-defined callback function for custom create, read, write, and close logic.
- [FUSE Implementations](https://awesome-repositories.com/f/operating-systems-systems-programming/fuse-implementations.md) — Maps FUSE operations to Dokan callbacks so existing FUSE file systems run on Windows without kernel-mode code. ([source](https://github.com/dokan-dev/dokany/wiki/FUSE))
- [Windows FUSE Ports](https://awesome-repositories.com/f/operating-systems-systems-programming/fuse-implementations/windows-fuse-ports.md) — Rebuilds existing Linux FUSE file systems to run natively on Windows through a compatibility wrapper. ([source](http://dokan-dev.github.io))
- [Windows FUSE Translation Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/fuse-implementations/windows-fuse-translation-layers.md) — Provides a translation layer that maps FUSE operations to Dokan callbacks, allowing unmodified FUSE file systems to run on Windows.
- [Multi-Language File System Development](https://awesome-repositories.com/f/operating-systems-systems-programming/operating-system-development/user-space-file-system-development/multi-language-file-system-development.md) — An API that provides file system callbacks accessible from C, .NET, Java, Delphi, Ruby, and other languages for custom file system development.
- [Virtual File Wrappers](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-file-wrappers.md) — Present any data source—local, remote, or cloud—as a file accessible from all Windows applications. ([source](http://dokan-dev.github.io))
- [Virtual System Mounting](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-system-mounting.md) — Mount any kind of data as a virtual file system, making it accessible transparently from all Windows applications. ([source](http://dokan-dev.github.io))
- [User-Mode Virtual Drives](https://awesome-repositories.com/f/operating-systems-systems-programming/windows-service-file-systems/user-mode-virtual-drives.md) — Mounts any data source as a virtual drive accessible from all Windows applications without writing kernel-mode code.

### Data & Databases

- [Custom User-Space File Systems](https://awesome-repositories.com/f/data-databases/file-storage-systems/custom-user-space-file-systems.md) — Build a fully functional file system that appears as a normal Windows volume without writing kernel-mode device drivers. ([source](https://cdn.jsdelivr.net/gh/dokan-dev/dokany@master/README.md))

### DevOps & Infrastructure

- [Encrypted Mounts](https://awesome-repositories.com/f/devops-infrastructure/remote-file-system-mounts/encrypted-mounts.md) — Mount a user-defined file system as a virtual drive by implementing callback functions for file operations and passing them to a mounting function. ([source](http://dokan-dev.github.io))

### Programming Languages & Runtimes

- [File Handle Context Managers](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/concurrency/thread-local-contexts/thread-safe-synchronization-contexts/file-handle-context-managers.md) — Associate arbitrary application data with each open file handle for the duration of the file access session. ([source](https://dokan-dev.github.io/dokany-doc/html/))

### Security & Cryptography

- [User-Mode File System](https://awesome-repositories.com/f/security-cryptography/access-restrictions/user-mode-file-system.md) — Apply complex, multi-layered access checks on file operations entirely in user mode. ([source](https://dokan-dev.github.io/))
- [User-Mode File System Access Controls](https://awesome-repositories.com/f/security-cryptography/granular-access-controls/resource-level-access-controls/user-mode-file-system-access-controls.md) — Enforce complex, custom security checks on file system operations from user mode without kernel-level code. ([source](https://dokan-dev.github.io/))
- [Custom Access Rules](https://awesome-repositories.com/f/security-cryptography/identity-access-management/access-control/custom-access-rules.md) — Apply user-defined security checks and multiple access-control layers to file system operations. ([source](http://dokan-dev.github.io))
- [User-Mode Access Controls](https://awesome-repositories.com/f/security-cryptography/security/policies/host-resource-access/file-system-access-controls/user-mode-access-controls.md) — Implement custom access checks and multiple security layers in user mode to control file system access. ([source](http://dokan-dev.github.io))

### Web Development

- [User-Mode File Operation Callbacks](https://awesome-repositories.com/f/web-development/api-management-tools/api-development-management/web-apis/file-reading/file-read-write-operations/user-mode-file-operation-callbacks.md) — Defines callback functions for file operations like reading, writing, and listing directories on a user-mode file system.
- [Windows API Semantics Callbacks](https://awesome-repositories.com/f/web-development/api-management-tools/api-development-management/web-apis/file-reading/file-read-write-operations/user-mode-file-operation-callbacks/windows-api-semantics-callbacks.md) — Handle file create, read, write, close, and cleanup operations through callback functions that mirror Windows API semantics and return NTSTATUS codes. ([source](https://dokan-dev.github.io/dokany-doc/html/))

### Part of an Awesome List

- [WIN32_FIND_DATA Directory Enumerations](https://awesome-repositories.com/f/awesome-lists/devtools/file-and-directory-management/directory-enumeration/win32-find-data-directory-enumerations.md) — Respond to directory listing requests by enumerating entries and filling WIN32_FIND_DATA structures, with optional wildcard pattern matching. ([source](https://dokan-dev.github.io/dokany-doc/html/))
- [Multi-Language API Bindings](https://awesome-repositories.com/f/awesome-lists/devtools/gpu-acceleration/gpu-accelerated-vector-indexing/multi-language-api-bindings.md) — Exposes the user-mode file system API through multi-language bindings for C, .NET, Java, Delphi, and Ruby. ([source](http://dokan-dev.github.io))

### Development Tools & Productivity

- [Multi-Language Bindings](https://awesome-repositories.com/f/development-tools-productivity/compilers-toolchains/c-extension-interfaces/multi-language-bindings.md) — Exposes the file system API through language-specific bindings for C, .NET, Java, Delphi, Ruby, and Python.
- [Language Bindings](https://awesome-repositories.com/f/development-tools-productivity/language-bindings.md) — Provides language-specific wrappers for Python, JavaScript, Java, Ruby, and .NET to bind FUSE functionality. ([source](https://github.com/dokan-dev/dokany/wiki/FUSE))
- [File System Build Wrappers](https://awesome-repositories.com/f/development-tools-productivity/multi-language-build-systems/file-system-build-wrappers.md) — Builds custom file systems using C, .NET, Java, Delphi, or Ruby through language-specific API wrappers. ([source](https://dokan-dev.github.io/))

### Networking & Communication

- [Windows Network Provider Registrations](https://awesome-repositories.com/f/networking-communication/webdav-network-drive-mounting/windows-network-provider-registrations.md) — Register a virtual drive as a network provider so Windows Explorer correctly handles it as a network location. ([source](https://dokan-dev.github.io/dokany-doc/html/))
- [Windows Network Provider Registrations](https://awesome-repositories.com/f/networking-communication/windows-network-provider-registrations.md) — Register a network provider component so Windows Explorer correctly handles virtual drives mounted as network shares. ([source](https://dokan-dev.github.io/dokany-doc/html/))
