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.
Unreleased - 1.0.6.1000
1.0.5.1000 - 2017-09-19
- Kernel - Add
FILE_NOTIFY_CHANGE_SECURITY
during SetSecurity
- Kernel - Createfile move
DOKAN_DELETE_ON_CLOSE
set flag after create success - Kernel - Return acces denied for paging file open request
- Kernel - CreateFile return
STATUS_DELETE_PENDING
for a request without share delete during a pending delete - Mirror -
FindClose
is not being called ifGetLastError
returns anything otherERROR_NO_MORE_FILES
1.0.4.1000 - 2017-08-31
- Library - Support
FileIdFullDirectoryInformation
- CI - IFSTest !
- Kernel - Add
FILE_NOTIFY_CHANGE_LAST_WRITE
in 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 -
DokanNetworkProviderUninstall
Make a single call of wcsstr - Library -
DokanNetworkProviderUninstall
ifDOKAN_NP_NAME
is already removed returnTRUE
- Mirror - Return
STATUS_INVALID_PARAMETER
error when folder is asked to be created withFILE_ATTRIBUTE_TEMPORARY
- Mirror - Always set
FILE_SHARE_READ
for 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_EXISTING
need GENERIC_WRITE so we add it
- Installer - Exe not signed
- Mirror - add
FILE_NAMED_STREAMS
to FileSystemFlags - Kernel - Issue #490 #502 #503 #554 #412
- Library - Fix dokanctl UAC execution level
- FUSE - Warning due to
DWORD
printed 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_EXISTING
file
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
DefaultGetFileSecurity
whenGetFileSecurity
is 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
MmFlushImageSection
ifImageSectionObject
is set during cleanup. - Library - Don't send free'd
DOKAN_OPEN_INFO
pointer to the driver. - Library - Fix printf param for unsigned int.
- Kernel - Add
DokanFreeMdl
for 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
MoveFile
is not implemented - Library - Low buffer handling correction on
QueryDirectory
- Library - Fix wrong buffer size provided to the kernel in
DokanGetMountPointList
- Kernel - Fix
dokanGlobal
wrongly zeroed and clean resource inDokanUnload
- Kernel - Add missing
IoDeleteDevice
whenIoCreateSymbolicLink
fail - FUSE - Check for non-empty directories on delete #270.
- Library - Use
NT_SUCCESS
inCreateFile
1.0.2.1000 - 2017-01-20
- FUSE - Add libfuse-compatible pkg-config
- Mirror - Add
DOKAN_OPTION_FILELOCK_USER_MODE
option with/f
- FUSE - Use pkg-config for building mirror
- Kernel - Many improvement allocation stack and heap
- Kernel - Enable
PAGED_CODE
forDokanCheckShareAccess
- Mirror - Return empty SACL if mirror doesn't have SeSecurityPrivilege
- Library - Use
DeleteMountPoint
for 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_CREATE
DesiredAccess 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
DeleteFile
andDeleteDirectory
withDeleteOnClose
set 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_READERS
duringPreAcquireForSectionSynchronization
when locked only with readers. - Mirror - Open handle when
GetFileInformation
requested after cleanup. - Kernel - Remove FCB
Resource
andMainResource
. Use FCB HeaderResource
instead allocated with LookasideList.
- Driver -
CcPurgeCacheSection
could 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
FsRtlOplockBreakH
to 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.inf
to solution -.cab
file 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
DokanGetMountPointList
to only retrieve instances with UNC - Mirror -
MirrorDokanGetDiskFreeSpace
as example - Driver - Handle
FileFsLabelInformation
(Rename label device name) - Library - Handle
GetFileSecurity
callbacks for directories. - Library - Default
QueryVolumeInformation
file system name - Use WinFSTest as test suits
- Library - Auto add current and parent folder in
FindFiles
request when missing - Installer -
Install development files
option at installations time - Installer - NET 4.0 in bundles
- Library -
DokanNtStatusFromWin32
helper - Library -
FileDispositionInformation
check attributeFILE_ATTRIBUTE_READONLY
- Driver -
SL_OPEN_TARGET_DIRECTORY
is 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.dll
to install folder - Installer - Move
dokanfuse.dll
to 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 dll
from Dokan Library install instead of sys32. - FUSE - use
_WIN32
in FUSE wrapper instead ofWIN32
define - Driver -
WriteFile
directly returnSTATUS_SUCCESS
when there is nothing to write - Library - When a delete fail, we now request parent folder if we can delete child
- Library -
DokanRemoveMountPointEx
has 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
NTFS
as default file system name - Driver - Application using
SocketConnection
in dokan device - Library -
QueryServiceStatus
return 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.h
include &CMakeLists
file name - FUSE - mount that was calling destroy ops
- Driver -
DokanGetFCB
was 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_CLOSE
in 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_EX
andIOCTL_STORAGE_GET_MEDIA_TYPES_EX
disk deviceIOCTL
https://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
CreateFile
is moved to CreateFileW dokan-dev#91- Library -
CreateDirectory
&OpenDirectory
have been merged with CreateFileW - FUSE - Use struct stat from cygwin as struct
FUSE_STAT
for 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_NAME
privilege 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 -
CreateFile
with 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 -
DokanMain
Deadlock with Network device #81 - Library -
DokanUnmount
failing to unmount a drive dokan-dev#79 - Driver - Remove potential memory leak in
DokanCreateDiskDevice
on allocation failure dokan-dev#108 - Miror - Wrong success when
CreateFile
was called to open directory for delete - Library -
CreateFile
now correctly set last-error code toERROR_ALREADY_EXISTS
when open success withCREATE_ALWAYS
andOPEN_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
DokanUnmount
driver letter name (#14)- Bad Pool BSOD on DokanGetFCB function (#11 / https://code.google.com/p/dokan/issues/detail?id=229)
- DbgPrint message on
CreateDisposition
function (#13)
0.7.1 - 2015-02-04
- Dokan.lib exported functions name
- Missing
KeEnterCriticalRegion
function 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