macanjang / dokan

Automatically exported from code.google.com/p/dokan
0 stars 0 forks source link

DeleteFile method not being called #269

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. I delete a file on the virtual drive 
2. file gets deleted
3. after refreshing the Windows Explorer file appears again

What is the expected output? What do you see instead?
expected: File gets delete
instead: File gets deleted on Virtual Drive, but after refresh file appears 
again.

What version of the product are you using? On what operating system?
dokan 0.6.0, Windows 8

Please provide any additional information below.
I checked in the log file, but no DeleteFile method gets called. Never. Maybe 
that's the problem.

Original issue reported on code.google.com by levi.ang...@gmail.com on 14 Nov 2012 at 4:42

GoogleCodeExporter commented 8 years ago
Details:
I am logging method calls. When i either push "Delete" button or Right Mouse 
Click -> Delete on a file, it gets deleted, but i cant see any DeleteFile 
method call in the log. Moreover, the file does not get deleted in the folder, 
just in the virtual drive, and after a refresh the file appears again on the 
virtual drive.

I am using Dokan 0.6.0 - C# binding on Win8

Original comment by levi.ang...@gmail.com on 15 Nov 2012 at 11:24

GoogleCodeExporter commented 8 years ago
Noticed the same problem, the DeleteFile callback in my C++ application never 
gets called under the Win8. Reviewed the Dokan debug log, noticed the Win8 does 
not call DokanSetInformation at all, so Dokan cannot delete the file using 
FileDispositionInformation. Looks like Win8 switched to "delete on close":
http://ww.osronline.com/ShowThread.cfm?link=226825

I am not sure if this can be solved in user mode. If not then a new signed 
driver for 64-bit is needed.

Original comment by news....@gmail.com on 11 Dec 2012 at 5:54

GoogleCodeExporter commented 8 years ago
A workaround in user mode is to remember the FILE_FLAG_DELETE_ON_CLOSE in 
CreateFile callback and later when Cleanup callback is called to drive the 
delete if this flag is on, not only when DokanFileInfo->DeleteOnClose is true.

Original comment by news....@gmail.com on 11 Dec 2012 at 6:34

GoogleCodeExporter commented 8 years ago
is a fix being work on?  our we'll have to download the source and modify the 
code as indicated in #2 & #3?

Original comment by tsang...@gmail.com on 17 Mar 2013 at 12:16

GoogleCodeExporter commented 8 years ago
I'm using dokan 0.6.0, Windows 8.
I can't find the way how to handle deleting of file.
DeleteFile has never been called.
Also I tried to use DokanFileInfo->DeleteOnClose, but unfortunately it is 
always false.
Can anybody tell me how to solve this problem?

Original comment by wizard...@gmail.com on 13 Jul 2013 at 10:29

GoogleCodeExporter commented 8 years ago
i would like to see a fix also :/ your the best tool available and thats saying 
alot considering there are no windows sshfs alternatives which are free!

Original comment by s...@fuseur.com on 6 Dec 2013 at 8:40

GoogleCodeExporter commented 8 years ago
For the #2 & #3 I made it working by modifying the application only (Mirror), 
no need to recompile the Dokan:

1. In the MirrorCreateFile() you have to remember (=store somewhere, e.g. 
global array with handle-flag pairs) if the FlagsAndAttributes had 
FILE_FLAG_DELETE_ON_CLOSE set 

2. Later when MirrorCleanup() is called, in addition to "if 
(DokanFileInfo->DeleteOnClose)" test also check if the file was earlier opened 
with the FILE_FLAG_DELETE_ON_CLOSE on (see 1.) and do the actual delete 

Original comment by news....@gmail.com on 9 Dec 2013 at 9:28

GoogleCodeExporter commented 8 years ago
For those having this issue, I've forked the project and fixed the problem so I 
can use sshfs until an official fix is available. Sources are available here :
https://github.com/Omega-Cube/win-sshfs

Note that you'll have to manually compile the project and replace your original 
Sshfs.exe with the one you just compiled.

Original comment by xrogerma...@gmail.com on 28 Jan 2014 at 4:11

GoogleCodeExporter commented 8 years ago
For whomever interested, I made a similar workaround for encfs4win on Windows 
8, available here: https://github.com/haoto/encfs4win

Original comment by tw.ha...@gmail.com on 15 Mar 2014 at 1:21

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Having trouble compiling anything under windows, any chance of a pre-compiled 
binary of encfs4win?

Thanks

Regards
Tony

Original comment by tcha...@gmail.com on 19 Mar 2014 at 10:09

GoogleCodeExporter commented 8 years ago
Hi, binaries of the modified encfs4win can be found here: 
https://github.com/haoto/encfs4win/wiki/Install

But please note that I only understand the code base enough to implement this 
workaround, so it might be best to wait until the change is reviewed by the 
original author.

Original comment by tw.ha...@gmail.com on 19 Mar 2014 at 12:06

GoogleCodeExporter commented 8 years ago
> Hi, binaries of the modified encfs4win can be found here: 
https://github.com/haoto/encfs4win/wiki/Install

This binaries won't start there is error(in attached file)
My OS Win8 x64.

Original comment by chernikh...@gmail.com on 13 Apr 2014 at 2:03

Attachments:

GoogleCodeExporter commented 8 years ago
@Tony
Thank you very much :-)

This works for me:
1. Install "DokanInstall_0.6.0.exe" in Compatibilitymode "Windows 7"
2. Install vcredist_x86.exe
3. Copy libeay32.dll und ssleay32.dll to C:\Windows\SysWOW64 only is missing 
(find in another Windows)
4. Copy "encfs4win-delete-on-close" from Tony to example C:\Tools\
5. Start the file "encfsw.exe" in the Dir "encfs4win-delete-on-close" as 
Administrator and in Compatibilitymode "Windows 7"

Regards
Tiemo

Original comment by ti...@dreher-net.de on 14 May 2014 at 9:32

GoogleCodeExporter commented 8 years ago
Hi Tony or Tiemo,

> Hi, binaries of the modified encfs4win can be found here: 
https://github.com/haoto/encfs4win/wiki/Install

This Link unfortunately does not work. Could you please upload 
"encfs4win-delete-on-close" again? That would be perfect!

Thanks, M.

Original comment by knuep...@gmail.com on 15 May 2014 at 5:07

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
The link still works.
I hope it is allowed by Tony.

Original comment by ti...@dreher-net.de on 19 May 2014 at 9:25

Attachments:

GoogleCodeExporter commented 8 years ago
Thank you. At first I was happy, because deleting Files really works now, but 
suddenly Norton Internet Security's Sonar deleted encfsw.exe saying that it 
behaves suspicios and names it a "high risk". This happened, as I checked the 
Autostart-Option in Preferences of the taskbar-Icon. I don't know, if it is 
maybe only a false positive or so, but I think, I will better not use it. It's 
a pitty...

M.

Original comment by knuep...@gmail.com on 19 May 2014 at 10:55

GoogleCodeExporter commented 8 years ago
I think it is a false positive.
I scan the file with https://www.virustotal.com and it was clean.

Original comment by ti...@dreher-net.de on 19 May 2014 at 11:46

Attachments:

GoogleCodeExporter commented 8 years ago
When I do a normal scan with norton internet security, there are no problems 
either. Just the Sonar-Heuristic complains about suspicious behaviour, when I 
check "Launch on startup". I did it again, and again, encfsw.exe was deleted 
(see attached jpg).I did a scan with virustotal on a zip containing all 
involved files (including my own versions of the required dlls for 
SysWOW64)which gave 1 positive and 52 negatives.In the end, it was the 
dokan-library, which was suspicious for only one of over 50 Scanners (see 
attached jpg. When I start the unmodified encfsw.exe and check "Launch on 
startup", this is OK for Norton and the file doesn't get deleted. Maybe the 
original file also behaves suspicious (and has conceptually good reason to do 
so for encryption/fuse?) but sometime came on a whitelist and the modified 
Version isn't yet?! Well, almost all virus scanners say, the modified 
encfsw.exe is OK. Sorry for the excitement. I would just like to technically 
understand, what norton or ViRobot find unacceptable.

Original comment by knuep...@gmail.com on 19 May 2014 at 3:32

Attachments:

GoogleCodeExporter commented 8 years ago
Actually, there is a very simple way to solve this problem. 
in create file function, 
test whether the FILE_FLAG_DELETE_ON_CLOSE is on. 
then, return error message.
then it works.

Original comment by traum...@gmail.com on 17 Dec 2014 at 4:31

GoogleCodeExporter commented 8 years ago
> Hi, binaries of the modified encfs4win can be found here: 
https://github.com/haoto/encfs4win/wiki/Install

I like how there are certain DLLs not included in the .zip file to waste 
everybodys time :) 

And what I like even more is that there are tons of different versions of this 
particular files available and no one works.

Very good work!

Original comment by m...@gulli.com on 3 Mar 2015 at 6:00

GoogleCodeExporter commented 8 years ago
It's not like you can't just compile the binaries yourself, is it?

Original comment by tw.ha...@gmail.com on 4 Mar 2015 at 12:02

GoogleCodeExporter commented 8 years ago
Just to confirm, this fix does indeed work. CreateFile is called just prior to 
the file being deleted, check the options contain DeleteOnClose and then when 
Cleanup is called just delete the file if DeleteOnClose was specified in 
CreateFile.
Thanks to those who suggested it.

Original comment by technic...@gmail.com on 28 Apr 2015 at 1:40

GoogleCodeExporter commented 8 years ago
If anyone is using Dokan because of encfs4win, there's another project you 
might use: http://sourceforge.net/projects/encfsmp/. This way you don't need 
Dokan and still mount encfs. It works w/o problems and I haven't experienced a 
system crash since uninstalling Dokan (Win 8.1).

Original comment by rast...@gmail.com on 28 Apr 2015 at 1:45