Dokany Changelog

What's new in Dokany 2.1.0.1000

Dec 23, 2023
  • Major changes:
  • Microsoft has changed the rules of which type of drivers (primitive) can be signed through their platform. Therefore we had to adapt how dokan is installed. Please let us know if you have any install / uninstall issue.
  • New library unmount API introduced by @LTRData.
  • Few (rare) BSOD fixed.

New in Dokany 2.0.6.1000 (Oct 2, 2022)

  • Changed:
  • Library - Improve documentation.
  • Fixed:
  • Kernel - Don't notify deletion on FileDispositionInformation completion but on Cleanup.

New in Dokany 2.0.5.1000 (Jul 4, 2022)

  • Changed:
  • FUSE - Allow override default max read size by option.
  • Kernel - Remove UNCName CaseInSensitive prefix during Create.
  • Library - Allow FindFilesWithPattern to return STATUS_NOT_IMPLEMENTED (like on v1).
  • Fixed:
  • Kernel - Add Vcb null check before marking the volume as having wait events.
  • Library - Use Case sensitive option when listing filtering is done by the library.

New in Dokany 2.0.4.1000 (May 1, 2022)

  • Changed:
  • Kernel - Remove possible UNCName prefix in Filename during CreateFile.
  • Library - Doc - Recommend FindFiles to be implemented
  • Library - Allow FindFiles to be optional by using FindFilesWithPattern with wildcard.
  • Fixed:
  • Library - Move UserContext under OpenCount lock to reduce incorrect value used when calling Close.
  • Kernel - Clear write change flag when FCB is being reused.
  • Kernel - Remove unsupported eject media support (deadlock).
  • FUSE - Update library name in module definition.

New in Dokany 2.0.3.2000 (Feb 27, 2022)

  • Fixed:
  • Installer - Regenerate all GUID to fix uninstall and conflict with v1.

New in Dokany 2.0.3.1000 (Feb 14, 2022)

  • Added:
  • Library - Add 16-128k IoBatch/EventResult pool for read and write.
  • Changed:
  • MemFS - Replace std::mutex by std::shared_mutex.
  • Library - Detect and use the best number of pulling threads with a minimum of two (unless single thread mode enabled) and a max of 16. Above 16, the io batch is enabled to use the extra threads to execute the possible extra request pulled.
  • Library - Expensive ZeroMemory on large Read and Write buffers were removed.
  • Library - Use absolute path for NetworkProvider registration ProviderPath.
  • Fixed:
  • Installer - Change driver GUID to avoid installer to uninstall v1 files during the installation.
  • Library - Fix incorrect lock hold when manipulating IoBatch.
  • Library - Add lock to avoid Unmounted callback to be called multiple times (each pulling thread).
  • MemFS - Fix double instance free on CTRL+C.

New in Dokany 2.0.2.1000 (Feb 6, 2022)

  • Fixed:
  • Library - Fix DokanResetTimeout DokanFileInfo usage.
  • Library - Correctly set PullEventTimeoutMs value.
  • Kernel - Fix notify queue timeout value and timeout detection.
  • Memfs - Fix SetFileAttributes behavior.
  • Library - Fix incorrect lock used for DokanOpenInfo OpenCount increments.
  • Changed:
  • Library - Use multiple main pull thread (4 instead of 1) to avoid deadlock during low activity.

New in Dokany 2.0.1.2000 (Jan 28, 2022)

  • Installer - Set new BundleUpgradeCode for v2.
  • Kernel - Lock Fcb during setFileInfo notify report change

New in Dokany 2.0.1.1000 (Jan 24, 2022)

  • This is a patch version:
  • Even if this is only a patch version that polish the v2 first release and finally makes it possible to have Dokan v1 and v2 installed side to side... the DokanFCB storage was switched from a simple list O(n) to an Adelson-Velsky/Landis (AVL) table log(n).
  • It will not make much difference when a few files are open but if you had 16k files opened, the kernel would only make ~4 string compared instead of 16k which is 🚀 during CreateFile.
  • And again here is how to migrate an existing > 1.1.0 filesystem to 2.0.0.
  • Thanks to all the contributors as always (@ATRiiX) !!!
  • Please see changelog for more details:
  • Added:
  • Kernel - Use the Rtl API to store DokanFCB in a Adelson-Velsky/Landis(AVL) table
  • Fixed:
  • Kernel - Fix possible PullEvents infinite loop.
  • Kernel - Fix crash when v2 and v1 are installed.
  • Kernel - Make RemoveSessionDevices thread safe.
  • Library - Fix OpenRequestToken crash when called outside CreateFile.
  • Kernel - Fix subfolder property when using mount manager.
  • Changed:
  • Installer - Allow installation side to side with 1.x.x.
  • Library / Kernel - Enforce UNC usage with network drive option.
  • Memfs - Update mount point in memfs after mount in case it changes.
  • Library - Silence expected failures during unmount and make DeleteDokanInstance safer.
  • Memfs - Use the new mount async API.
  • Kernel - Release NotifyEvent memory on unmount.
  • Kernel - Use IRP buffer fct for GetMountPointList.
  • Kernel - Cleanup SetInformation completion and remove DokanCCB::ERESOURCE.

New in Dokany 2.0.0.2000 (Jan 2, 2022)

  • Fixed:
  • Library - Missing new 2.0.0 API export.
  • Library - Move DOKAN_FILE_INFO.ProcessingContext offset in struct to avoid padding issues.

New in Dokany 1.5.1.1000 (Nov 26, 2021)

  • Added:
  • Mirror - Add an option to personalize the volume name.
  • Changed:
  • Installer - Add Debug drivers in cab for submission (Driver signature).
  • Dokanctl - Remove non available unmount by id option.
  • Fixed:
  • Memfs - Invalid create disposition log type.
  • FUSE - Use stbuf in readdir callback.
  • Kernel - Fix relative rename with Volume device as RootDirectory BSOD.
  • Kernel - Return a mount failure and cleanup the devices when the driver fails to set the mount point folder reparse point.
  • Kernel - Reset top-level IRP when creating / deleting reparse points.
  • Kernel - Delete device on InsertMountEntry failure.

New in Dokany 1.5.0.3000 (May 31, 2021)

  • This is a minor version.
  • This version focuses on Kernel changes:
  • Messages between Kernel and Library can now be sent by batch. We are looking for help to implement it in the library..
  • All the kernel logs have been rewritten!!! There is even an option to send them to userland DOKAN_EVENT_DISPATCH_DRIVER_LOGS (needs the batching option to properly work)!
  • IOCTL was changed to FSCTL to reduce conflict with apps and antivirus.

New in Dokany 1.5.0.2000 (May 27, 2021)

  • This version focuses on Kernel changes:
  • Messages between Kernel and Library can now be sent by batch. We are looking for help to implement it in the library..
  • All the kernel logs have been rewritten!!! There is even an option to send them to userland DOKAN_EVENT_DISPATCH_DRIVER_LOGS (needs the batching option to properly work)!
  • IOCTL was changed to FSCTL to reduce conflict with apps and antivirus.

New in Dokany 1.4.1.1000 (Jan 14, 2021)

  • Added:
  • Kernel/Library - Added support for FileIdExtdDirectoryInformation. Fixes directory listings under WSL2.
  • Kernel/Library - Add DOKAN_OPTION_CASE_SENSITIVE mount option.
  • Library - Add DOKAN_OPTION_ENABLE_UNMOUNT_NETWORK_DRIVE to allow unmounting network drive from explorer.
  • FUSE - Add removable drive option and use local drive as default type now.
  • Changed:
  • Library - C++ redistributable dependencies is fully removed for this release.
  • Installer - Remove no longer needed dependency to KB2999226 (VC Redist).
  • Kernel - Change DOKAN_CONTROL.VolumeDeviceObject to ULONG64 for other compiler than MSVC.
  • FUSE - Change default filesystem name to NTFS.
  • Fixed:
  • Library - Reduce desired access rights for loop device handle and keepalive handle. Avoid some antivirus incompatibility.
  • Library - No longer wait for apps to answer BroadcastSystemMessage during mount.
  • Library - Return STATUS_INVALID_PARAMETER where appropriate. Fixes directory listings under WSL2.
  • FUSE - Incorrect convertion for MountPoint using chinese characters.
  • MemFS - Fix out of range read when the offset is bigger than the buffer.
  • MemFS - Always remove FILE_ATTRIBUTE_NORMAL as we set FILE_ATTRIBUTE_ARCHIVE before.
  • MemFS - Correctly handle current session option

New in Dokany 1.4.0.1000 (Jun 1, 2020)

  • This version includes a lots of changes without breaking any compatibility with previous version. It mainly includes:
  • A new filesystem sample: MemFS. It is a better example to debug and know the dokan driver/library feature supported and NTFS compliant. The FS pass most of WinFSTest and IFSTest. It looks to be stable enough to be included in the installer. It hasn't been test with real usage but it is expected to run without issue. MemFS is written in c++ and is under MIT license.
  • Possibility to use the Mount Manager with directory mount point.
  • Better IRP Buffer management to fix kernel security fixes reported by Ilja Van Sprundel - Thanks!
  • Replace DOKAN_OPTION_OPTIMIZE_SINGLE_NAME_SEARCH by DOKAN_OPTION_ENABLE_FCB_GARBAGE_COLLECTION. The advantage of the GC approach is that it prevents filter drivers from exponentially slowing down procedures like zip file extraction due to repeatedly rebuilding state that they attach to the FCB header.
  • You can now find two installers with binaries built with and without VC redistributable. If no issue is reported, the next release will only have without the VC redistributable.
  • Lots of refactoring and Kernel fix.

New in Dokany 1.3.1.1000 (Dec 16, 2019)

  • Mainly this version includes only patches of the 1.3.0.1000.
  • But the Kernel driver has also been changed to remove all codes for XP / VISTA and is now built to a single binary for all windows versions.

New in Dokany 1.3.0.1000 (Jul 24, 2019)

  • Added:
  • Mirror - Use GetDiskFreeSpace during MirrorDokanGetDiskFreeSpace.
  • Kernel - Add most important log msg to Event Viewer.
  • Kernel - Add DOKAN_OPTION_DISABLE_OPLOCKS dokan option.
  • Kernel - Add check that DeviceControl are performed on a volume handle and not a file.
  • Kernel - Add DOKAN_OPTION_OPTIMIZE_SINGLE_NAME_SEARCH dokan option to speedup Win7 file name normalization.
  • Library - Add functions to notify Dokan Kernel that files in use fs has changed DokanNotifyCreate / DokanNotifyDelete / DokanNotifyUpdate / DokanNotifyXAttrUpdate / DokanNotifyRename.
  • SetAssemblyVersion - Now update DOKAN_MAJOR_API_VERSION.
  • Kernel - Write - Check total event length is not longer than what we can allocate.
  • Changed:
  • Use latest WDK & SDK for Windows 10 version 1903 and toolset v142.
  • Installer - Update VCRedistVersion to VS 2019 14.21.27702.
  • Mirror - Improve ShowUsage.
  • Library - DokanGetMountPointList now returns his own buffer that need to be released with DokanReleaseMountPointList.
  • Kernel - Return proper error status for DFileSystemControl.
  • Kernel - Fix OpLocks / Remove FCB Retry lock.
  • Kernel - Use debug mode option to enable lock or/and oplock kernel log.
  • Kernel - Rename DOKAN_KEEPALIVE_TIMEOUT to DOKAN_KEEPALIVE_TIMEOUT_DEFAULT
  • Fixed:
  • Kernel - Fix long rename BSOD with network option enabled.
  • Kernel - Fix root rename with 360 antivirus.
  • Library - Use DbgPrintW instead of DbgPrint when printing wide characters.
  • Library - Add error check for _vscprintf and vsprintf_s in DokanDbgPrint, and _vscwprintf and vswprintf_s in DokanDbgPrintW.
  • Library - Fix DokanUnmount possible oob memory.
  • Mirror - Fix possible oob memory during long findfiles path.
  • Mirror - Fix possible oob memory during long DeleteDirectory path.
  • Kernel - Lock global resources during DokanGetMountPointList avoid possible BSOD.
  • Kernel - Send correct notify change during FileRenameInformation when move to a diff folder.
  • Kernel - Move all Io ShareAccess under fcb RW lock.
  • Dokannp - Add leading to UNCName during NPGetConnection.

New in Dokany 1.2.2.1000 (Apr 1, 2019)

  • Added:
  • FUSE - Expose allocation unit size and sector size.
  • Kernel - Add new FileDispositionInformationEx for Windows 10, version 1709
  • Changed:
  • Library - Increase DOKAN_MAX_THREAD from 15 to 63 for better performance.
  • Kernel - FileStreamInformation now return directly STATUS_NOT_IMPLEMENTED if UseAltStream is disabled.
  • Library - Improve DokanIsNameInExpression documentation
  • Fixed:
  • Kernel - Wrong szMountPoint->length usage in DokanGlobalEventRelease
  • Kernel - Fix handle KeepAlive calls before device fully started

New in Dokany 1.2.1.2000 (Jan 30, 2019)

  • Added:
  • SetAssemblyVersion - Add update dokan version define
  • Fixed:
  • Library - Bump Dokan version to 121