From efe153819f18b252b959eb8a7e4457f0e359a33f Mon Sep 17 00:00:00 2001 From: Tobias Kienzler Date: Fri, 8 Jan 2016 13:35:10 +0100 Subject: [PATCH 1/2] DOKAN_MINIMUM_COMPATIBLE_VERSION set to 0.8.0, added DOKAN_*_ERRORs -6 and -7 --- fs/expose/dokan/__init__.py | 2 ++ fs/expose/dokan/libdokan.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/expose/dokan/__init__.py b/fs/expose/dokan/__init__.py index 32f7e57..d6a496f 100644 --- a/fs/expose/dokan/__init__.py +++ b/fs/expose/dokan/__init__.py @@ -105,6 +105,8 @@ DOKAN_DRIVER_INSTALL_ERROR = -3 DOKAN_START_ERROR = -4 DOKAN_MOUNT_ERROR = -5 +DOKAN_MOUNT_POINT_ERROR = -6 +DOKAN_VERSION_ERROR = -7 # Misc windows constants FILE_LIST_DIRECTORY = 0x01 diff --git a/fs/expose/dokan/libdokan.py b/fs/expose/dokan/libdokan.py index 5391d2c..4e09b36 100644 --- a/fs/expose/dokan/libdokan.py +++ b/fs/expose/dokan/libdokan.py @@ -32,7 +32,8 @@ DokanVersion.restype = ULONG DokanVersion.argtypes = () -if DokanVersion() < 392: # ths is release 0.5.3 +DOKAN_MINIMUM_COMPATIBLE_VERSION = 800 # this is release 0.8.0 +if DokanVersion() < DOKAN_MINIMUM_COMPATIBLE_VERSION: raise ImportError("Dokan DLL is too old") From 9753d6fab980104d33f9b2ea399da8a36c3208df Mon Sep 17 00:00:00 2001 From: Tobias Kienzler Date: Fri, 8 Jan 2016 13:37:45 +0100 Subject: [PATCH 2/2] Add Dokan version to DOKAN_OPTIONS --- fs/expose/dokan/__init__.py | 2 +- fs/expose/dokan/libdokan.py | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/fs/expose/dokan/__init__.py b/fs/expose/dokan/__init__.py index d6a496f..44dc8ae 100644 --- a/fs/expose/dokan/__init__.py +++ b/fs/expose/dokan/__init__.py @@ -919,7 +919,7 @@ def check_ready(mp=None): numthreads = kwds.pop("numthreads",0) flags = kwds.pop("flags",0) FSOperationsClass = kwds.pop("FSOperationsClass",FSOperations) - opts = libdokan.DOKAN_OPTIONS(drive[:1], numthreads, flags) + opts = libdokan.DOKAN_OPTIONS(libdokan.DOKAN_MINIMUM_COMPATIBLE_VERSION, drive[:1], numthreads, flags, 0, 0) ops = FSOperationsClass(fs, **kwds) if ready_callback: check_thread = threading.Thread(target=check_ready) diff --git a/fs/expose/dokan/libdokan.py b/fs/expose/dokan/libdokan.py index 4e09b36..bb35ff2 100644 --- a/fs/expose/dokan/libdokan.py +++ b/fs/expose/dokan/libdokan.py @@ -75,13 +75,14 @@ class BY_HANDLE_FILE_INFORMATION(Structure): class DOKAN_OPTIONS(Structure): _fields_ = [ - ("DriveLetter", WCHAR), - ("ThreadCount", USHORT), - ("Options", ULONG), - ("GlobalContext", ULONG64), + ("Version", USHORT), + ("MountPoint", LPCWSTR), + ("ThreadCount", USHORT), + ("Options", ULONG), + ("GlobalContext", ULONG64), + ("Timeout", ULONG) ] - class DOKAN_FILE_INFO(Structure): _fields_ = [ ("Context", ULONG64),