diff --git a/CHANGELOG.md b/CHANGELOG.md
index 311e6f82..b31674ce 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/).
+## [2.0.3.1000] - 2021-02-06
+
+### 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`.
+
## [2.0.2.1000] - 2021-02-06
### Fixed
diff --git a/Dokan.props b/Dokan.props
index e3a9dc97..1acad530 100644
--- a/Dokan.props
+++ b/Dokan.props
@@ -3,7 +3,7 @@
2
- 2.0.2
+ 2.0.3
diff --git a/README.md b/README.md
index 7e12c218..3fd47205 100644
--- a/README.md
+++ b/README.md
@@ -34,15 +34,15 @@ for more information.
The API has then again changed over time in [1.1.0](https://github.com/dokan-dev/dokany/wiki/Update-Dokan-1.0.0-application-to-Dokany-1.1.0) and [2.0.0](https://github.com/dokan-dev/dokany/wiki/Update-Dokan-1.1.0-application-to-Dokany-2.0.0).
-## Benchmark v1.5.1.1000 vs v2.0.1.2000
-A benchmark that is testing multiple scenarios repeaditly and sequentially was run 5 times against the `memfs` sample of v1.5.1.1000 and v2.0.1.2000 in an idle environment to precise results.
+## Benchmark v1.5.1.1000 vs v2.0.3.1000
+A benchmark that is testing multiple scenarios repeaditly and sequentially was run 5 times against the `memfs` sample of v1.5.1.1000 and v2.0.3.1000 in an idle environment to precise results.
The detail results can be seen in this spreadsheet [here](https://docs.google.com/spreadsheets/d/1zdJ6fmP_sqUGCM7SLtTle9N3JLyBOEAMRlwDLfUqm4Q/edit?usp=sharing).
As better threading and memory poll were added in v2, it is expected that concurrent scenarios (like those tests) would be even more highly improved.
A sample of the results:
```
-Create New | +13.55% | List | +60.69% | GetAttributes | +48.78% | Read | +16-28% |
-Open/Overwrite | +153.41% | ListExactFile | +131.91% | SetAttributes | +120.91% | Write | +2-24% |
+Create New | +13.55% | List | +60.69% | GetAttributes | +48.78% | Read | +18-42% |
+Open/Overwrite | +153.41% | ListExactFile | +131.91% | SetAttributes | +120.91% | Write | +10-32% |
RandomOpenClose | +173.05% | | | Delete | +90.83% | | |
```
diff --git a/appveyor.yml b/appveyor.yml
index 6a46151f..11f1c228 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -13,7 +13,7 @@
WLK_INST_CACHE: '%DOKAN_CI_CACHE%\wlk_inst'
DOKAN_MAIN_BUILD_JOB_NAME: "Image: Visual Studio 2019; Configuration: All"
- version: 2.0.2-{build}
+ version: 2.0.3-{build}
configuration:
- All
- SonarQube
diff --git a/documentations/Doxyfile b/documentations/Doxyfile
index f438dabb..3625dd7b 100644
--- a/documentations/Doxyfile
+++ b/documentations/Doxyfile
@@ -38,7 +38,7 @@ PROJECT_NAME = Dokan
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 2.0.2
+PROJECT_NUMBER = 2.0.3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/dokan/dokan.h b/dokan/dokan.h
index df98cfa9..f8eee384 100644
--- a/dokan/dokan.h
+++ b/dokan/dokan.h
@@ -56,7 +56,7 @@ extern "C" {
/** @{ */
/** The current Dokan version (200 means ver 2.0.0). \ref DOKAN_OPTIONS.Version */
-#define DOKAN_VERSION 202
+#define DOKAN_VERSION 203
/** Minimum Dokan version (ver 2.0.0) accepted. */
#define DOKAN_MINIMUM_COMPATIBLE_VERSION 200
/** Driver file name including the DOKAN_MAJOR_API_VERSION */
diff --git a/dokan/dokan.rc b/dokan/dokan.rc
index 1ed99320..0c6a8352 100644
--- a/dokan/dokan.rc
+++ b/dokan/dokan.rc
@@ -16,8 +16,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,0,2,1000
- PRODUCTVERSION 2,0,2,1000
+ FILEVERSION 2,0,3,1000
+ PRODUCTVERSION 2,0,3,1000
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -34,12 +34,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Dokan Project"
VALUE "FileDescription", "Dokan Library"
- VALUE "FileVersion", "2.0.2.1000"
+ VALUE "FileVersion", "2.0.3.1000"
VALUE "InternalName", "dokan.dll"
VALUE "LegalCopyright", "Copyright (C) 2021"
VALUE "OriginalFilename", "dokan.dll"
VALUE "ProductName", "Dokan"
- VALUE "ProductVersion", "2.0.2.1000"
+ VALUE "ProductVersion", "2.0.3.1000"
END
END
BLOCK "VarFileInfo"
diff --git a/dokan_fuse/src/dokanfuse.rc b/dokan_fuse/src/dokanfuse.rc
index 99060340..79115d8b 100644
--- a/dokan_fuse/src/dokanfuse.rc
+++ b/dokan_fuse/src/dokanfuse.rc
@@ -16,8 +16,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,0,2,1000
- PRODUCTVERSION 2,0,2,1000
+ FILEVERSION 2,0,3,1000
+ PRODUCTVERSION 2,0,3,1000
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -34,12 +34,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Dokan Project"
VALUE "FileDescription", "Dokan Fuse library"
- VALUE "FileVersion", "2.0.2.1000"
+ VALUE "FileVersion", "2.0.3.1000"
VALUE "InternalName", "dokanfuse.dll"
VALUE "LegalCopyright", "Copyright (C) 2021"
VALUE "OriginalFilename", "dokanfuse.dll"
VALUE "ProductName", "Dokan"
- VALUE "ProductVersion", "2.0.2.1000"
+ VALUE "ProductVersion", "2.0.3.1000"
END
END
BLOCK "VarFileInfo"
diff --git a/dokan_np/dokan_np.rc b/dokan_np/dokan_np.rc
index 2ac4b0a0..e6d0df03 100644
--- a/dokan_np/dokan_np.rc
+++ b/dokan_np/dokan_np.rc
@@ -16,8 +16,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,0,2,1000
- PRODUCTVERSION 2,0,2,1000
+ FILEVERSION 2,0,3,1000
+ PRODUCTVERSION 2,0,3,1000
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -34,12 +34,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Dokan Project"
VALUE "FileDescription", "Dokan Network Provider"
- VALUE "FileVersion", "2.0.2.1000"
+ VALUE "FileVersion", "2.0.3.1000"
VALUE "InternalName", "dokan.dll"
VALUE "LegalCopyright", "Copyright (C) 2021"
VALUE "OriginalFilename", "dokannp.dll"
VALUE "ProductName", "Dokan"
- VALUE "ProductVersion", "2.0.2.1000"
+ VALUE "ProductVersion", "2.0.3.1000"
END
END
BLOCK "VarFileInfo"
diff --git a/dokan_wix/version.xml b/dokan_wix/version.xml
index dc956da5..6a7ebf68 100644
--- a/dokan_wix/version.xml
+++ b/dokan_wix/version.xml
@@ -1,13 +1,13 @@
-
+
-
+
-
+
diff --git a/sys/dokan.rc b/sys/dokan.rc
index 3fd83c48..5d894776 100644
--- a/sys/dokan.rc
+++ b/sys/dokan.rc
@@ -16,8 +16,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,0,2,1000
- PRODUCTVERSION 2,0,2,1000
+ FILEVERSION 2,0,3,1000
+ PRODUCTVERSION 2,0,3,1000
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -34,12 +34,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Dokan Project"
VALUE "FileDescription", "Dokan Driver"
- VALUE "FileVersion", "2.0.2.1000"
+ VALUE "FileVersion", "2.0.3.1000"
VALUE "InternalName", "dokan.sys"
VALUE "LegalCopyright", "Copyright (C) 2021"
VALUE "OriginalFilename", "dokan.sys"
VALUE "ProductName", "Dokan"
- VALUE "ProductVersion", "2.0.2.1000"
+ VALUE "ProductVersion", "2.0.3.1000"
END
END
BLOCK "VarFileInfo"