Commercial Alternatives to FUSE on Windows


Introduction

FUSE (Filesystem in Userspace) lets an ordinary application implement a filesystem without writing kernel code. On Linux, it's widely available through the kernel's FUSE module and the libfuse userspace library. Windows does not provide a native FUSE implementation. Asking for a "commercial alternative to FUSE on Windows" is really asking what fills that gap. The most common answers are open-source projects, so this article starts there.

Open-Source Options: Dokan and WinFsp

Two open-source projects provide FUSE-like filesystem support on Windows by shipping their own kernel driver: Dokan and WinFsp. Neither is a Microsoft product, and neither is a direct port of Linux FUSE. Both are independent driver-plus-library projects that expose a comparable filesystem-in-userspace model, and both include a FUSE-compatible API.

Their licensing differs:

  • Dokan: per its README, the driver and libraries are licensed under the LGPL, and the control program and samples under the MIT license. The LGPL can permit use with proprietary applications, subject to its requirements.
  • WinFsp: per its commercial license page, WinFsp is available under the GPLv3 with a special exception for free and open-source software. Entities that want to use it without the GPLv3 restrictions can buy a commercial license, which permits linking and distribution in closed-source products.

Dokan vs. WinFsp: Comparing Windows User-Mode Filesystem Frameworks covers the licensing terms and API options of both projects in more detail.

For applications that need a commercially licensed SDK, a vendor-supported driver, and a direct vendor relationship, the requirements are different. That's where CBFS Connect fits.

The CBFS Connect FUSE Component

CBFS Connect's FUSE component offers an API similar to the one used by the FUSE library on Linux. An application written against it handles the operations a libfuse implementation would recognize, such as Open, Read, Write, GetAttr, and ReadDir. The same component is available on Windows, Linux, macOS, iOS, and Android.

On Windows, the component runs on CBFS Connect's own kernel-mode driver, not on Dokan or WinFsp. The driver ships prebuilt and Microsoft-signed. CBFS Connect is a commercial SDK, with versioned releases tracked against new Windows builds and vendor support during evaluation and after purchase.

On Windows, driver installation is a one-time deployment step, separate from application startup. Call Install once, typically from your installer. It requires administrator rights, and a nonzero return value means a reboot is needed to complete installation. In production, the installation script can also do this through the Installer DLL.

// Deployment step (Windows only): run once from your installer. FUSE installer = new FUSE(); int rebootNeeded = installer.Install(@"C:\path\to\cbfs.cab", "{YOUR-PRODUCT-GUID}", "", 0);

Each time the application starts, call Initialize with the same product GUID, implement the event handlers, and mount the filesystem:

FUSE fuse = new FUSE(); fuse.Initialize("{YOUR-PRODUCT-GUID}");
// Implement the event handlers your filesystem needs (Open, Read, // GetAttr, ReadDir, and others) before calling Mount.
fuse.Mount("Z:");

The shared event model is the point. The same mental model, and much of the same event-handling code, can target each supported platform without learning a separate driver API for each one.

When You Need Windows-Specific Filesystem Features

The libfuse API was designed around POSIX filesystem semantics. It doesn't model Windows-specific features such as ACL-based security descriptors, alternate data streams, per-process access rules, or reparse points. CBFS Connect's native CBFS component is a Windows-only API with direct support for them, through properties and methods such as UseWindowsSecurity, UseAlternateDataStreams, ProcessRestrictionsEnabled with AddGrantedProcess and AddDeniedProcess, and UseReparsePoints. Compare CBFS and FUSE Components has the full feature-by-feature table.

Both approaches are available within the same SDK. A cross-platform product can use the FUSE component, and a Windows build that needs deeper OS integration can use the CBFS component, without switching vendors or licensing a second toolkit.

Choosing an Approach

There are three broad options:

  • Open-source Windows frameworks. For applications that only need a FUSE-like filesystem interface on Windows, Dokan and WinFsp may meet the technical requirements. Their licensing models and integration requirements differ, so evaluate each against the application you're distributing.
  • Commercial FUSE-style development. The CBFS Connect FUSE component gives a FUSE-like API on Windows, Linux, macOS, iOS, and Android, backed by a commercially licensed SDK and a vendor-supported, Microsoft-signed driver on Windows.
  • Deeper Windows integration. The CBFS Connect CBFS component exposes Windows-specific filesystem features that a FUSE-style interface doesn't model.

We appreciate your feedback. If you have any questions, comments, or suggestions about this article please contact our support team at support@callback.com.