All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
1.3.1.1000 - 2019-12-16
- Kernel - Added support for
FileIdExtdBothDirectoryInformation, which is required when the target is mapped as a volume into docker containers.
- Kernel - Single build target Win7 / enable new features according to OS during runtime. Remove supported XP/Vista code.
- Kernel - Only log to event viewer when debug default log is enabled.
- Library - Clarified documentation of dokan file-change notification functions.
- Build - Run Code Analysis on all builds of debug build configurations within Visual Studio, but not by default from msbuild.
- Mirror - Add
GetDiskFreeSpaceUNC as Root support.
- Library - Incorrect call to
legacyKeepAliveThreadIdsWaitForObject. - Kernel -
FileNameInformation- Only concatUNCName/DiskDeviceNamefor network devices. - FUSE - Infinite loop when using characters from Unicode supplementary planes ('🔈' for example).
- FUSE - Support
WriteFilewith offset-1. - FUSE -
get_file- Do not use the current file shared mode.
1.3.0.1000 - 2019-07-24
- Mirror - Use
GetDiskFreeSpaceduringMirrorDokanGetDiskFreeSpace. - Kernel - Add most important log msg to Event Viewer.
- Kernel - Add
DOKAN_OPTION_DISABLE_OPLOCKSdokan option. - Kernel - Add check that
DeviceControlare performed on a volume handle and not a file. - Kernel - Add
DOKAN_OPTION_OPTIMIZE_SINGLE_NAME_SEARCHdokan 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.
- 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 -
DokanGetMountPointListnow returns his own buffer that need to be released withDokanReleaseMountPointList. - 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_TIMEOUTtoDOKAN_KEEPALIVE_TIMEOUT_DEFAULT
- Kernel - Fix long rename BSOD with network option enabled.
- Kernel - Fix root rename with 360 antivirus.
- Library - Use
DbgPrintWinstead ofDbgPrintwhen printing wide characters. - Library - Add error check for
_vscprintfandvsprintf_sinDokanDbgPrint, and_vscwprintfandvswprintf_sinDokanDbgPrintW. - Library - Fix
DokanUnmountpossible 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
DokanGetMountPointListavoid possible BSOD. - Kernel - Send correct notify change during
FileRenameInformationwhen move to a diff folder. - Kernel - Move all
Io ShareAccessunder fcb RW lock. - Dokannp - Add leading
\toUNCNameduringNPGetConnection.
1.2.2.1000 - 2019-03-08
- FUSE - Expose allocation unit size and sector size.
- Kernel - Add new
FileDispositionInformationExfor Windows 10, version 1709
- Library - Increase
DOKAN_MAX_THREADfrom 15 to 63 for better performance. - Kernel -
FileStreamInformationnow return directlySTATUS_NOT_IMPLEMENTEDifUseAltStreamis disabled. - Library - Improve
DokanIsNameInExpressiondocumentation
- Kernel - Wrong
szMountPoint->lengthusage inDokanGlobalEventRelease - Kernel - Fix handle KeepAlive calls before device fully started
1.2.1.2000 - 2018-12-21
- SetAssemblyVersion - Add update dokan version define
- Library - Bump Dokan version to 121
1.2.1.1000 - 2018-12-18
- Kernel/Library - Replace keepalive ping event by a single keep alive file handle
- Cert - Runs with admin rights and checks Secureboot is enabled
- Kernel - Fix Buffer Overflow by adding mount length path check
1.2.0.1000 - 2018-08-09
- Build - Add ARM64
- Installer - Remove .NET dependency.
- Build - Remove Windows 10 build for ARM
- Library - Allow usage driver letter
A - Documentation - Add
FSNamenotice forNTFS&FAT - Documentation - Add
GetFileSecurityreturnSTATUS_NOT_IMPLEMENTEDremark - Library - Update
DOKAN_VERSIONto 120 andDOKAN_MINIMUM_COMPATIBLE_VERSIONto 110 - Kernel - Only set FO_FILE_MODIFIED for no paging io during write complete
- Library - Missing session id in
DOKAN_CONTROLfor user space - NetworkProvider - UNC paths using only for current session show offline for other session.
- Installer - Dokan Network Provider - Move back
dokannp1.dlltosystem32folder andSysWow64 - Mirror - Initialize
userTokenHandlecorrectly - FUSE - Return correct status when file is open
FILE_OVERWRITE_IForFILE_OPEN_IFsuccessfully - Kernel - PageIO Dead lock
- Library - Get correct name (not uppercase) when repase point mount is used
1.1.0.2000 - 2018-01-19
- Installer - Fix Wrong redist download link rename
- Installer - Fix vc++ version number displayed
- Installer - Update message download VC link
1.1.0.1000 - 2017-11-28
- Mirror - Add Impersonate Option for Security Enhancement.
- FUSE - Add read-only option
- Installer - Add VCRedistVersion variable / Now display version needed
- Dokanctl - Add usage option /?
- Kernel / Library - Add New FileRenameInformationEx since Windows 10 RS1
- FUSE - cross-compile 32-bit Cygwin DLL from 64-bit
- Library - Merge DokanMapStandardToGenericAccess with DokanMapKernelToUserCreateFileFlags
- Move to VS 2017 / v141 / SDK 10.0.16299.0 / Installer Redist 2017
- Kernel - Fix current session unmount not releasing the device properly
- Mirror - Cannot open a read only file for delete
- Mirror - Fix SetFileAttributes implementation by not updating when FileAttributes is 0x00
- Installer - Wrong new logo size
- Kernel - Fixes #616 Only lock when not paging io
1.0.5.1000 - 2017-09-19
- Kernel - Add
FILE_NOTIFY_CHANGE_SECURITYduring SetSecurity
- Kernel - Createfile move
DOKAN_DELETE_ON_CLOSEset flag after create success - Kernel - Return access denied for paging file open request
- Kernel - CreateFile return
STATUS_DELETE_PENDINGfor a request without share delete during a pending delete - Mirror -
FindCloseis not being called ifGetLastErrorreturns anything otherERROR_NO_MORE_FILES
1.0.4.1000 - 2017-08-31
- Library - Support
FileIdFullDirectoryInformation - CI - IFSTest !
- Kernel - Add
FILE_NOTIFY_CHANGE_LAST_WRITEin cleanup after write - Kernel - Notify file size changed after a write beyond old size
- Mirror - Query underlying fs for filesystem flags and AND them with mirror default flags. Get filesystem name and maximum component length from underlying fs. Change default maximum component length from 256 to 255.
- Library - Doc Add context release info in CreateFile
- Build - PS Sign - Add env variables required in comments
- Mirror - Ensure the Security Descriptor length is set in mirror
- Library -
DokanNetworkProviderUninstallMake a single call of wcsstr - Library -
DokanNetworkProviderUninstallifDOKAN_NP_NAMEis already removed returnTRUE - Mirror - Return
STATUS_INVALID_PARAMETERerror when folder is asked to be created withFILE_ATTRIBUTE_TEMPORARY - Mirror - Always set
FILE_SHARE_READfor directory to avoid sharing violation forFindFirstFile - Library - When looking parent folder if we have the right to remove a file, cleanup
FILE_NON_DIRECTORY_FILE - Library - Set proper information for
FILE_OVERWRITE(TRUNCATE_EXISTING) - Mirror - Microsoft doc say
TRUNCATE_EXISTINGneed GENERIC_WRITE so we add it
- Installer - Exe not signed
- Mirror - add
FILE_NAMED_STREAMSto FileSystemFlags - Kernel - Issue #490 #502 #503 #554 #412
- Library - Fix dokanctl UAC execution level
- FUSE - Warning due to
DWORDprinted as %d - FUSE - Braces warning and remove commented code
- Kernel - BSOD with verifier enabled
- Kernel - BSOD during searching the backslash
- Kernel - Buffer len check
IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME - Kernel - Fix wrong error return for invalid relative file creation with leading slash
- Mirror - Return proper error when open a directory with
FILE_NON_DIRECTORY_FILE - Mirror - Cannot overwrite a hidden or system file if flag not set return
STATUS_ACCESS_DENIED - Mirror - Update FileAttributes with previous when
TRUNCATE_EXISTINGfile
1.0.3.1000 - 2017-03-24
- Installer - WiX: Ship PDB-files for
dokanfuse.dll. - Add Windows on ARM support.
- FUSE - Add uncname option
- Mirror - Add optional long path max
- Library - Add
DefaultGetFileSecuritywhenGetFileSecurityis not handled by user mode
- Library - Improve some mount error messages.
- FUSE - Return error when file open as directory with
FILE_NON_DIRECTORY_FILE. - Kernel - Clean all global disk device data in
CleanupGlobalDiskDevice - Kernel - Update mount point if mount manager did not follow our suggestion.
- Installer - Win10 x86 driver not properly signed for x86 anniversary.
- Kernel - Fix deadlock in
DokanDispatchCleanup. - Kernel - Do
MmFlushImageSectionifImageSectionObjectis set during cleanup. - Library - Don't send free'd
DOKAN_OPEN_INFOpointer to the driver. - Library - Fix printf param for unsigned int.
- Kernel - Add
DokanFreeMdlfor read operation inDokanCompleteRead. - Kernel - Fix crash issue cause by canceling the copy operation.
- FUSE - Replace wrong error type returned
- Library - Change rename fixed buffer to dynamic alloc
- Library - Rename return directly if
MoveFileis not implemented - Library - Low buffer handling correction on
QueryDirectory - Library - Fix wrong buffer size provided to the kernel in
DokanGetMountPointList - Kernel - Fix
dokanGlobalwrongly zeroed and clean resource inDokanUnload - Kernel - Add missing
IoDeleteDevicewhenIoCreateSymbolicLinkfail - FUSE - Check for non-empty directories on delete #270.
- Library - Use
NT_SUCCESSinCreateFile
1.0.2.1000 - 2017-01-20
- FUSE - Add libfuse-compatible pkg-config
- Mirror - Add
DOKAN_OPTION_FILELOCK_USER_MODEoption with/f
- FUSE - Use pkg-config for building mirror
- Kernel - Many improvement allocation stack and heap
- Kernel - Enable
PAGED_CODEforDokanCheckShareAccess - Mirror - Return empty SACL if mirror doesn't have SeSecurityPrivilege
- Library - Use
DeleteMountPointfor removing reparse point instead ofDeleteVolumeMountPoint - Library - Remove Redundant control flow jump
- Driver - Less wide locking
- Kernel - Align security descriptor to 4-byte boundary in
DokanDispatchSetSecurity - Library - Fix dokan context leak when CreateFile fail
- Kernel - Fix BSOD. When drive is started using n option and procmon is attached the rename of files in the root folder is not possible
- Kernel - Relative path rename
- Library - Write Set correctly the userland NtStatus
1.0.1.1000 - 2016-11-04
- Library -
DokanMapStandardToGenericAccess- ConvertIRP_MJ_CREATEDesiredAccess to generic rights.
- Driver - Use atomic operations for FCB and CCB flags instead of locks.
- Update Windows SDK to 10.0.14393
- Library - Call now
DeleteFileandDeleteDirectorywithDeleteOnCloseset at a delete request OR canceled. - Driver - Double check that the returned security descriptor is valid before returning success on QuerySecurity.
- Installer - Enable dev tools by default.
- Driver - Return
STATUS_FILE_LOCKED_WITH_ONLY_READERSduringPreAcquireForSectionSynchronizationwhen locked only with readers. - Mirror - Open handle when
GetFileInformationrequested after cleanup. - Kernel - Remove FCB
ResourceandMainResource. Use FCB HeaderResourceinstead allocated with LookasideList.
- Driver -
CcPurgeCacheSectioncould cause deadlock when FCB was locked in the same time. - Driver - Deadlock on related FCB.
- FUSE - Race condition in Dokan FUSE.
- Driver - BSOD issue related to filesystem mount on Windows 10 build 14936.
- Driver - Unlock FCB during
FsRtlOplockBreakHto let other request Lock FCB. - FUSE - Set correctly Authenticated Users rights (Explorer menu context).
- Mirror - Reject when trying to open a file as a directory.
- Driver - Return correct status for
FSCTL_FILESYSTEM_GET_STATISTICS- Can now net share on Windows Server 2012 R2
1.0.0.5000 - 2016-09-20
- MAJOR version to binary name
- Resource information to library with full dokan version
- Installer - Move to WiX toolset
- Library - DokanOption to mount the drive on current session only
- FUSE - Export utils fonctions
- FUSE -
daemon_timeout=<milisec>, background and network option parameter as options. - Library - Notify drive arrival/removal
- Driver -
dokan.infto solution -.cabfile is now build and embedded with installer - FUSE Cygwin / Msys2 binaries in installer (optional)
- FUSE Cygwin mirror as example
- Driver - log for unknown
IOCTL_STORAGE_QUERY_PROPERTY - Mirror - Use control handler function to gracefully close on Ctrl+C
- FUSE - handle
SetAllocationSize - Installer - Environement variable to dokan path:
DokanLibrary1/DokanLibrary1_LibraryPath_x64/DokanLibrary1_LibraryPath_x86 - Dokan NP - Totally new Dokan network provider
- Driver - Oplock implementation
- Logo Dokan in VSIX
- Library - Parameters on
DokanGetMountPointListto only retrieve instances with UNC - Mirror -
MirrorDokanGetDiskFreeSpaceas example - Driver - Handle
FileFsLabelInformation(Rename label device name) - Library - Handle
GetFileSecuritycallbacks for directories. - Library - Default
QueryVolumeInformationfile system name - Use WinFSTest as test suits
- Library - Auto add current and parent folder in
FindFilesrequest when missing - Installer -
Install development filesoption at installations time - Installer - NET 4.0 in bundles
- Library -
DokanNtStatusFromWin32helper - Library -
FileDispositionInformationcheck attributeFILE_ATTRIBUTE_READONLY - Driver -
SL_OPEN_TARGET_DIRECTORYis now handle directly by the driver - A website with the documentation.
- Support PagingIO
- FUSE - Use FUSE-compatible dir-hierarchy
- Installer - Update redistributable link to VS Update 2
- Installer - Add
dokan.dllto install folder - Installer - Move
dokanfuse.dllto install folder - Installer - Destination folder have now the dokan version in the name
- Sign binary and installer with SHA1 & SHA2
- Library - Call FindFiles if FindFilesWithPattern returns
STATUS_NOT_IMPLEMENTED - Library - Disable network device when mount point folder is specified.
- Dokanctl - Register
dokannp dllfrom Dokan Library install instead of sys32. - FUSE - use
_WIN32in FUSE wrapper instead ofWIN32define - Driver -
WriteFiledirectly returnSTATUS_SUCCESSwhen there is nothing to write - Library - When a delete fail, we now request parent folder if we can delete child
- Library -
DokanRemoveMountPointExhas now a Safe option (force during remove if safe) - Dokanctl - No longer need admin permission for listing mount point, show usage and print version
- Mirror - Update show usage
- Driver - Use LookasideLists for DokanCCB and DokanFCB
- FUSE - Improve and fix debug logs
- FUSE - Add cmake-install target
- FUSE - Make utils.h usable under C
- Driver - Support hibernation mode
- Driver- BSOD during unmounts -> Restore
DokanStopCheckThread - Mirror - Use
NTFSas default file system name - Driver - Application using
SocketConnectionin dokan device - Library -
QueryServiceStatusreturn value check - FUSE - Fix directory deleting if opendir is not hooked
- Driver - Start failure on Win7 x86
- Mirror - Fix all issues reported by WinFSTest
- Driver - BSOD: network drive fileObject has no Vpb
- Library - Null-terminate string in unmount
- Library - Capitalization of
windows.hinclude &CMakeListsfile name - FUSE - mount that was calling destroy ops
- Driver -
DokanGetFCBwas not case sensitive - FUSE - Force getattr since Windows use readdir information compared to libfuse behavior
- FUSE - Call statfs with the root directory /
- FUSE - Wrong opt default value
- Driver - Save
DOKAN_DELETE_ON_CLOSEin CCB and restore CCB flag during cleanup - Mirror - Replace main return -1 by
EXIT_FAILURE - Mirror - Low and high param inversions for Un/LockFile
- Installer - Correctly check KB3033929 is installed on Win7
- Driver - Notify correctly when a file is removed with
FILE_FLAG_DELETE_ON_CLOSE
- Dokanctl - unused /f option during unmount
- Library -
SetLastError(ERROR_ALREADY_EXISTS);in CreateFile logic by directly returnSTATUS_OBJECT_NAME_COLLISION
0.8.0 - 2015-12-10
- Installer - Embed VC++ redistributable in DokanInstall_X.X.X_redist.exe
- Alternative Streams enumeration support #48
IOCTL_DISK_GET_DRIVE_GEOMETRY_EXandIOCTL_STORAGE_GET_MEDIA_TYPES_EXdisk deviceIOCTLhttps://github.com/dokan-dev/dokany/commit/08b09a3910dbac0e902a81ad9e9ae1a06d4a6d90- The timeout per device has been implemented. The DokanOptions has a new property Timeout (Milliseconds) #55
- Installer - include PDB files
- Coverity
- FUSE - readonly flag dokan-dev#90
- Write protect device option dokan-dev#105
- Mounted DokanOperation is now called when device is mounted
- Library - Logs in DispatchQueryInformation and DokanPrintNTStatus
- Installer - Move dokan include and lib files
- Driver - Central error handling #56
- Library - Return type Dokan API to NTSTATUS #65
- Installer - Move install-pdb to the main installer as an option
- Move to WDK 10 & Visual Studio 2015
- Move to clang-format code style LLVM
CreateFileis moved to CreateFileW dokan-dev#91- Library -
CreateDirectory&OpenDirectoryhave been merged with CreateFileW - FUSE - Use struct stat from cygwin as struct
FUSE_STATfor better compatibility dokan-dev#88 - Dokanctl - Driver path is now resolved from %SystemRoot% dokan-dev#104
- FUSE - Library is now a dynamic library (was static)
- Dokanctl - update showusage
- Library - Unmount has been renamed as Unmounted and are now called when device is unmounted #117
- Mirror - Ensure to have
SE_SECURITY_NAMEprivilege and fixGetFileSecurity - FUSE - get_disk_free_space() return error changed #114
- Library - Use _malloca() for debug strings to avoid buffer overflows dokan-dev#84
- Driver -
CreateFilewith empty FileName - Driver - BSOD in security #55
- Prevent thread termination if not enough resources #55
- Mirror - cannot delete empty directory #54
- Installer - Clean the register after uninstall
- Installer - Remove the driver after reboot
- Installer - Move dokan include and lib files 1f94c875bc90c339b1f7bb2e57dcbac514e0a6bc
- Library -
DokanMainDeadlock with Network device #81 - Library -
DokanUnmountfailing to unmount a drive dokan-dev#79 - Driver - Remove potential memory leak in
DokanCreateDiskDeviceon allocation failure dokan-dev#108 - Miror - Wrong success when
CreateFilewas called to open directory for delete - Library -
CreateFilenow correctly set last-error code toERROR_ALREADY_EXISTSwhen open success withCREATE_ALWAYSandOPEN_ALWAYS(see mirror)
- Library - Keep Alive option - Enabled as default
- Driver - Deadcode in
IRP_MJ_SHUTDOWN
0.7.4 - 2015-08-21
- Fuse include to installer #37
- Doc updated #41 & Fix grammar #38
- #26
- MoveFileEx #39
0.7.2 - 2015-05-12
- AppVeyor CI build
- Code style standardization
DokanUnmountdriver letter name (#14)- Bad Pool BSOD on DokanGetFCB function (#11 / https://code.google.com/p/dokan/issues/detail?id=229)
- DbgPrint message on
CreateDispositionfunction (#13)
0.7.1 - 2015-02-04
- Dokan.lib exported functions name
- Missing
KeEnterCriticalRegionfunction call in sys/fileinfo.c
- Japan readme
0.7.0 - 2015-01-30
- Extended drive letters usage range from D - Z to B - Z (BenjaminKim/dokanx#13)
- Moved to WDK8.1 with Visual Studio 2013 support
- Improved DotNet wrapper with nullable datetime
- Fixed dokan_mirror offset processing on large files (BenjaminKim/dokanx#18)
- Build warnings
- Dokan installer
- PAGED_CODE declarations
0.6.0 - 2014-12-10
Latest Dokan version from Hiroki Asakawa. http://dokan-dev.net/en