Dokan

user mode file system for windows    >>Japanese version

Open Source Dokan library 0.3.2 released

May 26th, 2008 in Dokan

I am pleased to announce the release of open source Dokan library 0.3.2.

Dokan is a user-mode file system for Windows. You can make your open file system very easily!
Now dokan is released under open source license.

Dokan contains LGPL, GPL and MIT licensed programs.
- user-mode library (dokan.dll) LGPL
- driver (dokan.sys) GPL
- control program (dokanctl.exe) MIT
- mount service (mounter.exe) MIT

You can download new dokan library and source code from Download Page.
You must uninstall previous version and restart your computer BEFORE install new version.

Changes from 0.2.6
- Changed license
- Fixed directory entries when accessed by Windows file sharing
- Refactoring

I added new document to Doc
How to build dokan library
Sorry, link was broken.

15 Responses to “Open Source Dokan library 0.3.2 released”

  • Open Source Dokan library 0.3.2 released | Guide Open Source
    May 26th, 2008 at 5:03 pm

    [...] Mike Riversdale wrote an interesting post today onHere’s a quick excerptI am pleased to announce the release of open source Dokan library 0.3.2. Dokan is a user-mode file system for Windows. You can make your open file system very easily! Now dokan is released under open source license. … [...]

  • Kein
    May 26th, 2008 at 6:44 pm

    Hi Hiroki.

    First I thank you for your work.

    I’m actually working on a project using a serial device to retrieve data from a card and i’ve fought with Namespace Exstension for long and still miss some functionnality.

    As the project include a linux part I’ve worked with fuse and then discovered your project which is very interesting.

    I was just wondering if there was not a way to unmount automatically when the process exit. Else I will find a way it’s just to know if you had implemented the function and I just missed it.

    Keep your good work.

  • Hiroki
    May 27th, 2008 at 2:26 am

    Hello, kein

    Dokan doesn’t have automatic unmount feature. If you stop your user-mode file system, you should run “dokanctrl /u drive_letter” to unmount the drive. I think it is important for Dokan to work correctly even if user-mode application hanged up, so Dokan needs automatic unmount feature. I’ll implement it in the feature version.

  • Sebastian
    May 27th, 2008 at 4:36 am

    Hi Hiroki,

    I’m developing a commercial/shareware .Net application and am using your Dokan.NET framework. Now I’m a little confused about the licensing, concerning the redistribution of your different library parts.
    I know that the LGPL allows me to redistribute the (unchanged) dokan.dll as well as the DokanNet.dll with my installer. But how about the Dokan.sys (driver…I guess the dokan.dll needs it, right?)? Can I redistribute it as well?
    If not, how should I proceed? Can I include your installer in my installer? Shall I redirect users to your website and make them install the Dokan lib themselves?

    Just to make sure…I’m talking about unmodified versions of all libraries.

    Again, my best regards for your work!

    Sebastian

  • Hiroki
    May 27th, 2008 at 7:21 am

    Hello, Sebastian

    You can redistribute Dokan library under GPL license. If you don’t change Dokan library, you can include Dokan library in your package
    without any source code. GPL doesn’t taint your software because Dokan driver and your program are separate programs. Your software can link to dokan.dll because dokan.dll is LGPL.
    (dokan.dll needs dokan driver.)

    For more details of GPL, please check FAQ of GPL.
    http://www.gnu.org/licenses/gpl-faq.html

    To install Dokan library, you need to setup Dokan library correctly, so I recommend you to launch Dokan installer from your installer.

  • Kein
    May 27th, 2008 at 3:29 pm

    Hi Hiroki,
    thanks for the answer I’ll be sure to check for the newer version.

    Another question has come to me, why is there so much repeated call to certain functions.
    For example by selecting a file the readfile method is called twice.

    Is it the way Windows works or I made a mistake somewhere?

    Thanks again for your work, it works very well. I have already exceeded the level where I was with my Namespace Extension.

  • Sebastian
    May 27th, 2008 at 9:17 pm

    @Kein

    AFAIK, these multiple calls are normal, since Windows tries to read the file headers, in order to gain information about the file (e.g. read the thumbnail from a jpeg header to display it in the “Thumbnail” view). Because some headers are larger than others, Windows normally hands over a buffer of the size 4096, lets it be filled (by you) and then checks it for the required information. If Win can’t find e.g. the jpeg’s metadata or the thumbnail from the example above, it hands over another buffer of the size 4096, and then another and another…..until you have pushed through the whole file. This happens, for example, if you have a jpg photo with no metadata header.

  • HarryH
    May 28th, 2008 at 12:10 am

    Many thanks Hiroki, I appreciate your hard work in getting this directory issue fixed for me.. I will try it out very shortly.

    Thanks Again,
    HarryH

  • yukoba
    May 28th, 2008 at 9:11 am

    I created following things. Please see! And I’m glad if this patches are add to official packages.

    1. Windows 2000 patch
    2. Add “-noLockOnSource” option to mirror file system
    3. Java Wrapper - JDokan
    4. MemoryFS
    5. JSFlickrFS

    http://yukoba.accelart.jp/2008/05/windows-fuse-dokan-become-open-source.html

  • Hiroki
    May 28th, 2008 at 3:19 pm

    Hello, yukoba

    Thank you very much for your contribution.
    I was amazed by your speedy job. I want to try your Java binging when I have a time.

    Win2k issue:
    Dokan doesn’t support Win2k because I don’t have testing environment and I don’t afford to test on many platforms. I saw your patch, but it causes memory leaks when filter driver is used. FsRtlTeardownPerStreamContexts must be called when FCB is freed.
    I found how to handle this problem, so I may release Win2k support version without binary release.

    mirror issue:
    I didn’t notice that application can’t be launched from mirrored file system. I’ll try to check it later.

    Thanks

  • naguine
    June 3rd, 2008 at 5:59 am

    Hi Hiroki,
    thanks for this wonderful tool !
    I’m builing a C program that redirects
    Dokan calls to the network, and i
    would like to contribute it when
    it’s ready (a week or so).
    Would you be interested in
    incorporating it in Dokan ?
    I also have a question about useability :
    i would love it if dokan could be used
    without the need for it to be installed, so that you could distribute an executable that works
    right out of the box. I have absolutely no knowledge about windows, but do you think it’s possible ?
    thanks again,
    cheers

  • Hiroki
    June 4th, 2008 at 3:11 pm

    Hello, naguine

    Automatic installing is difficult for Dokan because Dokan library needs some setup; installing driver, registering service. To make it uninstallable is also important, so Dokan needs the installer.

  • Alex Besogonov
    June 7th, 2008 at 1:15 am

    FYI, I’m starting to implement FUSE binding support.

    So far, everything looks fine.

    Except that it would be nice to support mounting in arbitrary directories, not just on top-level disks.

  • Alex Besogonov
    June 7th, 2008 at 5:36 am

    Ok, I have some questions now :)

    It is not possible to have several Dokan sessions in one process at the same time. But it should be fairly easy to add it, as far as I can see there are just a few globals which can be fairly easy eliminated.

    Next, is it possible to implement “fuse_interrupted” function? It tells if a request has been interrupted.

    Also, can you tell me your e-mail? I can’t find it on this site.

  • Hiroki
    June 7th, 2008 at 4:02 pm

    Hello, Alex

    > It is not possible to have several Dokan sessions in one process
    > at the same time. But it should be fairly easy to add it, as far
    > as I can see there are just a few globals which can be fairly
    > easy eliminated.

    Dokan can handle multiple mounts at once when you mount drives from separate multiple programs. I also think it is useful to be able to multiple mount from one program, so I’ll add this feature next version.

    > Next, is it possible to implement “fuse_interrupted” function?
    > It tells if a request has been interrupted.
    What do you mean “interrupted”? A request is already canceled?

    > Also, can you tell me your e-mail? I can’t find it on this site.
    I put email address on top page.

    Thanks

Leave a Reply

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