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.3.1000
- 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 for
DokanCheckShareAccess
- Mirror - Return empty SACL if mirror doesn't have SeSecurityPrivilege
- Library - Use DeleteMountPoint for removing reparse point instead of
DeleteVolumeMountPoint
- 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