Dokan

user mode file system for windows    >>Japanese version

Dokan library 0.3.9 released

September 28th, 2008 in Dokan

Dokan library 0.3.9 is released today.

Dokan library is a user mode file system library for Windows.
x64 version is not ready now. I updated only x86 version.

Changes from 0.3.7
- Fixed: TRUNCATE_EXISTING is not working problem (issue)
- Fixed: FILE_FLAG_DELETE_ON_CLOSE is not working problem (issue)
- Fixed: CloseFile is never called problem, I’m not sure whether I could really fix this problem.
- Fixed: Disable APC when calling ExAcquireResourceExclusiveLite
- Fixed: Error check of memory allocations

I put a link to issues list on the header. If you find a bug, please use this link.
I also add a svn repository for Dokan library.

26 Responses to “Dokan library 0.3.9 released”

  • John
    October 8th, 2008 at 12:07 pm

    Wow, I’m surprised that there is an implementation of userspace filesystems in Windows! I’ve been looking for something like this for a while, thanks!

    By the way, I think your About page (http://dokan-dev.net/en/about/) has a few typographical errors:

    “Dokan means ‘cray pipe’ in Japanese. Dokan library works as proxy and lookd like ‘pipe’.”

    It probably should read as such:

    “Dokan means ‘clay pipe’ in Japanese. The Dokan library works as a proxy and looks like a ‘pipe’.”

    I’m looking forward to new developments in Dokan!

  • Hiroki
    October 12th, 2008 at 8:30 pm

    Thank you, John

    As you know, I’m not a native English speaker. Especially, giving an article is difficult for me :-

  • Taya
    October 13th, 2008 at 11:56 pm

    Hi, Hiroki,

    I was glad to find the dokan project with it’s great functionality and simplicity for use. But it’s still a few compatibility restrictions to start use it immediately for me. I mean the language and/or it’s version (.net-2.0).
    What you think about the idea to unbind dokan from any language by passing addresses of callback functions as parameters to dinamic libriary?

    Thanks.
    Taya.

  • 路人甲
    October 15th, 2008 at 1:02 am

    A newbie question about Dokan file deletion .

    Why

    * Dokan perform deletion immediately when the SET_INFORMATION_FILE packet is received instead of defer the deletion until the file is closed (exactly speaking the request is the deletePending state changing request).

    and
    * ” if (!dispositionInfo->DeleteFile) ” is commented off ?

    After a google swimming, I found http://www.osronline.com/showThread.cfm?link=79371 and (the FastFat sample also shows this)

  • John
    October 15th, 2008 at 7:46 am

    Hello, Hiroki,

    Hey, no problem! We’re just all happy that you’ve made a userspace filesystem library for Windows. :)

  • Hiroki
    October 15th, 2008 at 10:14 pm

    Hello, Taya
    Dokan needs to send a message to user mode file system application and receive a result.
    The callback is the first way to do.

    > I mean the language and/or it’s version (.net-2.0).
    What do you mean? I think Dokan.NET should work in the later version of .NET if you recompile it, though, I didn’t try it.

    Thanks,

  • Hiroki
    October 15th, 2008 at 10:37 pm

    Hi, 路人甲
    Thank you for you information. The commentout is just for easy implementation.
    I should do something for file deletion.
    Dokan has a problem when multiple file deletions on Explorer. This might be related to the delete-on-close issue.

  • jla
    October 24th, 2008 at 5:18 pm

    Good Work!

    Thanks.

  • Alex
    November 2nd, 2008 at 4:07 am

    Konnichiwa Hiroki-san,

    thanks for your great work. I’ve nearly finished the second beta of a tool which introduces the file system of Topfield PVR’s to Windows.

    Right now, DokanGetDiskFreeSpace and DokanGetVolumeInformation return hard coded values. Any plans to implement these call backs?

    Best regards, Alex

  • Wolfram
    November 8th, 2008 at 4:46 am

    Hi Hiroki

    thanks a lot for your great work. I tried the same work many years ago and I know how difficult it is, to get it into this working state like yours. - Thanks a lot again

    But I have a further question. Under NTFS it is possible to give the Files some more Informations - Author, Title etc.
    You can see it under details of the file. It is possible that your FS also can handle these details. This would be great.

    Best regards, Wolfram

  • glen worstell
    November 10th, 2008 at 3:14 am

    How can I unmount a remote file system? Closing the file browser does not do the unmount.

    Thanks for a very useful program!

    Glen.

  • Hiroki
    November 11th, 2008 at 1:10 am

    Hi, Wolfram
    That function is implemented with “alternate stream”. Dokan also supports alternate streams by specifying it in DOKAN_OPTIONS.

  • Hiroki
    November 11th, 2008 at 1:11 am

    Hello, glen worstell
    Do you mean Dokan SSHFS? You can right click on the tasktray icon and click “umount”.

  • Hiroki
    November 11th, 2008 at 1:15 am

    Hello, Alex
    I have some requests to implement them on Dokan.NET but I haven’t decided yet. Dokan library itself can handle those requests so If you modify Dokan.NET, you can use them on your file system.

  • Wolfram
    November 14th, 2008 at 1:49 am

    Thanks for your reply :-)

  • Allen
    November 18th, 2008 at 4:12 pm

    Fabulous work, this looks really helpful. I have an application that requires mounting more than one drive letter from the same application. It looks to me like the driver should support this, but the user space library doesn’t. If the drive letter was added to the DOKAN_FILE_INFO structure that’s passed to the callbacks, then it would be relatively easy for me to do the rest. Any plans on adding this in a future release?

  • Michael
    November 18th, 2008 at 5:54 pm

    Hi Hiroki.
    When will be your next source-code update? I tried to figure out the problems but i couldn’t understand the bug source.
    By the way, your project is wonderful and too much helpful.

  • Wolfram
    November 18th, 2008 at 6:22 pm

    Hi Hiroki

    First I have implemented a RAM - Disk in c# based on your Dokan library 0.3.9. Now it seems to run :-) - I can create, move, renname files and directorys - so all seems to be perfect. But it seems that your lib will change some Errorcodes. When open a file with CreateFile and FileMode = OpenOrCreate and the file already exits WinXP will set the Errorcode to 183 - ERROR_ALREADY_EXISTS. If I try to get the same result with my RAM Disk i produce the same Error (183*-1) but the testing application will receive Error 80 - ERROR_FILE_EXISTS. Why is the received Errorcode not the same as the sended Errorcode.

    Best regards, Wolfram

    PS: thanks a lot for your great work

  • Rod Cloutier
    November 20th, 2008 at 12:59 am

    Hi,

    Anyone having problem running under Vista64? I know that the 64bit version is not yet available but can we run the 32bit version in emulation? Should the 64bit version of 0.9.37 work? Are there any special steps to make it work?

    Thanks a lot.

    Keep up the great work.

    Rod

  • Michael
    November 20th, 2008 at 3:25 pm

    Hi Rod Cloutier,
    under Vista64 you should copy dokan.dll to “C:\Windows\SysWOW64″ directory. However Hiroki still has not compiled 0.3.9 version for 64Bit processors and you can test with older versions of dll.

  • pablo
    November 24th, 2008 at 4:40 am

    Hi there,

    I’ve just started working with Dokan and I have several questions.

    You mentioned in this thread that it is possible to use the “alternate streams” to implement extended properties. Could someone point an example?

    Also, I’m using the Mirror FS sample, and right clicking on a file to retrieve its properties (right click and then click on properties) takes a really long time even for a tiny file. I put Console.WriteLine (I’m using .NET) on each call but I don’t get any output. It can take longer than 20 or 30 secs. Any ideas?

    Also, is there a mailing list for this kind of questions?

    Thanks!

    pablo

  • pablo
    November 24th, 2008 at 4:47 am

    Ok, the “speed issue” was due to setting opt.ThreadCount = 1;

    If you set it to 0 (the non-debug on) it simply flies!

  • Hiroki
    November 26th, 2008 at 9:50 am

    Hi, pablo
    You can find some documents when you search “alternate streams”
    For example, http://msdn.microsoft.com/en-us/library/ms810604.aspx
    BTW, Dokan library doesn’t support enumeration of streams,
    but stream itself works when the name is known. Dokan SSHFS use alternate streams to show and change permission on property dialog.

    > Also, is there a mailing list for this kind of questions?
    No, there are two places, for a bug, issues list http://code.google.com/p/dokan/issues/ and this blog.

  • pablo
    November 27th, 2008 at 8:51 am

    Hi Hiroki,

    Thanks for the info!

    I’ve already implemented a couple of simple FS and it looks really promising.

    Do you have any plans to implement some sort of filter driver to intercept calls on disk FS.

    Also, one question: the number of bytes to read is always 0 on input. I think it is not set by the driver layer in response to client request, is that true? I mean, we end up reading in 4Kb chunks, but the bytes to read is always 0. Is it a bug?

    I still have some problems implementing file write, some applications raise errors when writing, but I’m working on it. Also, I had to add directory entries for “.” and “..” in order to allow some apps to work correctly. I’ll try to blog about it as soon as possible.

    Regards,

    pablo

  • Wolfram
    November 30th, 2008 at 7:33 pm

    @pablo

    Hi pable
    I have read your question about the “number of bytes to read”. I didn’t know what version do you prefer. But in my case (.net - version) you see the number of bytes on the size of the buffer. Then you have to fill the buffer and after this you have to set the “readBytes” variable to the count that you have written into the buffer. So YOU have to set the readBytes Variable not DOKAN. You only have to read the offset variable from which position you have to fill the buffer. So offset is the beginning position of YOUR buffer. This is because Dokan-buffer could be smaller than YOUR data buffer.

    I hope this will help you

    Best regards
    Wolfram

  • Martin
    July 15th, 2010 at 9:46 pm

    Hello,
    thanks for Dokan SSHFS. I have several sshfs sessions, I have several letters mounted. I want to umount one of them. How do I know which tray icon belongs to which letter? There is only SSHFS tooltip when I hover over the tray icon and the only text in the context menu is “Exit” and “Unmount”.
    Thank you!

    Martin

Leave a Reply

*
To prove that you're not a bot, enter this code
Anti-Spam Image