Dokan

user mode file system for windows    >>Japanese version

Dokan library 0.4.2 released

December 31st, 2008 in Dokan

Today I released Dokan library 0.4.2 for x86.
This version fixed BSOD introduced in the previous version. If you use Dokan library 0.4.1, please update to this version.

Changes since 0.4.1
- Fixed BSOD when an application is launched on Dokan drive. issue

34 Responses to “Dokan library 0.4.2 released”

  • john
    January 5th, 2009 at 7:47 am

    google

  • Luzius
    January 14th, 2009 at 10:51 pm

    Interesting, we have to test this, might be more reliable and predictable than what we are currently using (local CIFS drive).

  • Wolfram
    January 23rd, 2009 at 1:03 am

    Hallo Hiroki

    Some weeks ago you told me that a property page will work with Alternate Data Stream and DOKAN will support ADS when
    the UseAltStream is set. I tried to support Alterate Data Streams to my File System but it failed. I looked into fileinfo.c and I found

    case FileStreamInformation:
    //DbgPrint(“FileStreamInformation\n”);
    status = STATUS_NOT_IMPLEMENTED;
    break;

    I have a made a application that tries to enumerate the AD streams but it must fail because FileStreamInformation is not implemented. Could you give me some information when you implement FileStreamInformation.

    The second problem that I have is, that I can’t use FileMon (from Sysinternals) because since i use Dokan 0.4.2 I will get a BSOD when I try to log the request. This wasn’t in Dokan 0.3.9.

    BTW thanks for your great work

    Wolfram

  • dvkch
    January 23rd, 2009 at 5:30 am

    Hie,
    I would like to know if there was a way to know (inside a DokenOperations inherited class) on which letter the instance has been mounted.
    Thanks !

  • Hiroki
    January 29th, 2009 at 12:39 am

    Hello, Wolfram
    Wow, I didn’t expect enumeration of alternate streams. This should be supported.
    Fileman problem will be fixed soon.
    Thanks,

  • Hiroki
    January 29th, 2009 at 12:40 am

    Hello, dvkch
    We don’t have a way to get drive letter on Dokan.NET now.
    I add features to Dokan library rately, which enable you to get these information, so I’ll update Dokan.NET too.

    Thanks,

  • krisha
    January 31st, 2009 at 7:00 pm

    Hi,

    Dokan and SSHFS are really nice applications. I’m using them on my notebook. If I power my notebook to standby the dokan SSHFS icon disappears and it seems that the application is closed, but the drive letters are not free’d and I can’t access or remove them anymore.

    Maybe this is a small bug ;-)

    btw, if Captcha doesn’t fit and I press bak on browser, my complete comment is wiped out :-(

  • Matthijs
    January 31st, 2009 at 11:00 pm

    Hi Hiroki,

    First of all, thanks for starting this wonderful Dokan library! Great work indeed.

    Secondly, I have a request:

    I have started making a Delphi binding (non-.NET) for Dokan (which, of course, will be available once I have it working!). It looks very promising! I can load the dll, call DokanMain, and a drive letter appears in Explorer.

    I do, however, stumble across a fact that makes it all a little bit harder, and a little bit less elegant:

    Since I am writing a binding for Delphi, which is a highly object-oriented language, I naturally want to wrap everything in an object (actually, there will be two possibilities: one is an object type that developers can create an instance of in their code, the other a component that developers can simply drop onto a form (or data module)). This object / component has events that a developer, using my Delphi binding, can hook onto. So, if a developer defines an event method (e.g. OnCreateFile), then the moment your library calls back the CreateFile function (as defined in the Dokan Operations structure), it should call this event method “OnCreateFile”, belonging to the object / component instance.

    But for this to work elegantly, I need to know *what* object / component called DokanMain in the first place (this becomes especially important if I would have more than one instance of a file system active (i.e. more than one file system loaded = more than one drive letter mounted), or even instances of different file system types). This is not an unthinkable situation: E.g. the fantastic TrueCrypt offers exactly this possibility: you can mount as many drive letters as you like.

    Now, you do provide a “GlobalContext” field in Dokan Options. But I don’t see that value coming back in any of the call-backs! I would want to fill it with the address (= a pointer to) my object or component instance. And then, when any of the call-backs gets called, it should be there, so I can call the appropriate event method belonging to the object or component instance.

    The way it is now, there is no way (that I know of) to differentiate between instances of file systems. The only option would be to limit the number of file system instances per file system application to one. But that would be an inelegant and unnecessary limitation!

    So my request is: could you make it so that all call-back functions have the GlobalContext field, filled with the value that it was given in Dokan Options?

    One other question (maybe a stupid one…): would it be possible / easy / difficult / impossible to avoid using dokan.dll, and call dokan.sys directly? A possible motive for doing so could be to achieve a higher performance. But how does dokan.dll communicate with dokan.sys?

    Kind regards,

    Matthijs.

  • Hiroki
    January 31st, 2009 at 11:33 pm

    Hello, Matthijs
    You can access GlobalContext through DokanFileInfo which is passed to all callback routines. DokanFileInfo->DokanOptions->GlobalContext
    This doesn’t work?

    > would it be possible / easy / difficult / impossible to avoid using
    > dokan.dll, and call dokan.sys directly?
    Technically, it is possible. But you need to re-implement all of dokan.dll does. I change dokan.dll and dokan.sys and the interface between driver and dll is not stable. I think the overhead of callback is really small, so there is no incentive to re-implement dokan.dll for performance.

    Thanks,

  • Matthijs
    February 1st, 2009 at 12:15 am

    > You can access GlobalContext through DokanFileInfo which is
    > passed to all callback routines.
    > DokanFileInfo->DokanOptions->GlobalContext
    > This doesn’t work?

    Ah! Oversight on my part. I seem to have dropped some fields there ;-) Will re-check my entire code to see if I have left out other things as well…

    The place seems a bit odd though: GlobalContext is info about the file system, and not about files (Dokan*File*Info). Wouldn’t it be better, more logical, to have it in a structure separate from DokanFileInfo? Like e.g. “DokanFileSystemInfo”?

    Is DokanFileInfo->DokanOptions->GlobalContext available in the non-file-related call-backs (GetDiskFreeSpace, GetVolumeInformation and Unmount)? I can’t check now, because these seem not to get called at all for some reason…

    Thanx! Keep up the good work!

  • Hiroki
    February 1st, 2009 at 12:30 am

    > The place seems a bit odd though: GlobalContext is info about the
    > file system, and not about files (Dokan*File*Info). Wouldn’t it be
    > better, more logical, to have it in a structure separate from
    > DokanFileInfo? Like e.g. “DokanFileSystemInfo”?
    I think so. But I don’t want to increase the number of arguments. I think this is a reasonable way.

    > Is DokanFileInfo->DokanOptions->GlobalContext available in the
    > non-file-related call-backs (GetDiskFreeSpace,
    > GetVolumeInformation and Unmount)?
    No. This feature was added recently and doesn’t think about non file-related operations at that time. I fix this in the next version.

    Thanks!

  • Matthijs
    February 1st, 2009 at 3:14 am

    >> The place seems a bit odd though: GlobalContext is info about the
    >> file system, and not about files (Dokan*File*Info). Wouldn’t it
    >> be better, more logical, to have it in a structure separate from
    >> DokanFileInfo? Like e.g. “DokanFileSystemInfo”?
    > I think so. But I don’t want to increase the number of arguments. > I think this is a reasonable way.

    Agreed. However, maybe you could give it a more general, less confusing name? DokanInfo perhaps?

    >> Is DokanFileInfo->DokanOptions->GlobalContext available in the
    >> non-file-related call-backs (GetDiskFreeSpace,
    >> GetVolumeInformation and Unmount)?
    > No. This feature was added recently and doesn’t think about non
    > file-related operations at that time. I fix this in the next
    > version.

    Okay, thanks!

    Another question (not very important): how are things like e.g. “Format”, “Check disk” or “Defragment” handled normally? I mean, when a user clicks “Format” on the drive’s context menu in Explorer, or the “Check now” or “Defragment now” buttons in a drive’s property sheet? Are these the kind of things that could / should be handled by a user-defined file system? If not, could they be disabled on, or removed from, the context menu / property sheet? Or, would it even be possible to give a drive its own, custom property sheet?

    Thanx!

  • Ronen
    February 3rd, 2009 at 9:28 am

    Hi Hiroki!

    First of all – great project. I’ve been looking for something like this for quite a while!

    I’ve just started playing with the bits and noticed that I can’t control the timeouts from the code (I’m using .NET).
    I see you have a kernel thread watching for hang IRPs, but the “DOKAN_CHECK_INTERVAL” is hardcoded. Can you add an option (say to the “DokanOptions”) to set the timeout? And also, if you could signal the watchdog thread from the callback function (like ReadFile for example) to reset or disable timeout somehow – by calling a special function perhaps – that would be great! I’m doing network operations ower the WAN in the callback code, so it can take a while for the operation to complete and finer control over timeouts would be great.

    Regards,
    Ronen.

    P.S> BTW, you have a small bug in the DokanNet\Proxy.cs :-)
    Access to the “infoTable_” dictionary should be serialized, since dictionary object is not thread safe for writes.

    //class Proxy

    private object infoTableLock_ = new object();

    //private DokanFileInfo GetNewFileInfo(ref DOKAN_FILE_INFO FileInfo)

    lock (infoTableLock_)
    {
    infoTable_[info.InfoId] = info;
    }

    //public int CloseFileProxy(IntPtr FileName,ref DOKAN_FILE_INFO FileInfo)

    lock (infoTableLock_)
    {
    infoTable_.Remove(info.InfoId);
    }

  • Dek
    February 10th, 2009 at 8:36 pm

    Hi,

    There is an issue with indesign CS2. The file cannot be saved when you use mirror.exe to mirror a local disk. The file is correctly saved on a local drive. FileMon seems to indicate that the first WriteFile sent from indesign receive an INVALID_PARAMETER. But it seems that filemon is pretty unreliable.

    I ll continue to search.

  • Aru
    February 27th, 2009 at 4:28 am

    Hi,

    Thank you for the great work – much appreciated.

    I’m going to go through the mirror.exe source but I thought some of you might have a quick answer. Basically what I need is an NTFS formatted RAM drive in Windows PE. I was wondering if it is possible to spoof it somehow by changing mirror.exe?

    Many thanks,
    Aru

  • Steven Van Ingelgem
    March 14th, 2009 at 5:11 am

    Hi Hiroki,

    I was looking at your library though I have a question: for installing the driver you still need adminstrative rights correct? Is there a way to load the driver “on the fly” on a limited user account?
    What I am aiming for is to create a program which creates a new drive within the Windows Explorer, but doesn’t need admin rights to run.

    Thanks,
    Steven

  • Anselmo Battisti
    April 25th, 2009 at 10:37 am

    Hi i am from brazil / parana / cascavel and today i need to make a sshfs on windows and dokan works perfect for me thnx a lot

  • Ben
    February 9th, 2010 at 1:32 am

    I just downloaded the 0.4.2 installer and I am running on Windows 7. The installer says my system isn’t supported. Do you have support for Windows 7 or a way to manually install?

  • Anne Jones
    June 28th, 2010 at 9:27 pm

    I have the same problem. I’m using windows 7 as well. I need Dokan library as soon as possible to finish my essay.

  • Anne Jones
    June 28th, 2010 at 9:28 pm

    I have the same problem. I need Dokan library as soon as possible to finish my essay.

  • Finch24Shelby
    October 18th, 2010 at 12:22 pm

    Do you recognize that it’s high time to get the personal loans, which would help you.

  • click here for yankee candles
    March 1st, 2011 at 12:30 am

    Buy Yankee Candles at Half Off…

    [...]the time to read or visit the content or sites we have linked to below the[...]…

  • Inexpensive Yankee Candles
    March 1st, 2011 at 3:31 pm

    Super Cheap Yankee Candles…

    [...]we like to honor other sites on the web, even if they aren’t related to us, by linking to them. Below are some sites worth checking out[...]…

  • internet marketing training
    March 23rd, 2011 at 3:22 pm

    Great stuff from you, man. Ive read your stuff before and youre just too awesome. I love what you’ve got here, love what youre saying and the way you say it. You make it entertaining and you still manage to keep it smart. I cant wait to read more from you. this is really a great blog.

  • Reversal of Tubal Ligation
    May 18th, 2011 at 8:21 pm

    amazing saying about Dokan 0.4.2

  • Article writing
    June 4th, 2011 at 6:16 pm

    Hi
    I daily read comments it increases my ideas and it is best way to increase our awareness whats, changing

  • Cheap Oakley
    July 4th, 2011 at 7:14 pm

    hi, your artical is good

  • Juicy Couture Outlet
    July 4th, 2011 at 7:14 pm

    right

  • Birkenstock Outlet
    July 11th, 2011 at 11:53 am

    GOOD POST

  • Reva Flats
    July 11th, 2011 at 11:53 am

    WELL DONE

  • new era hats
    July 14th, 2011 at 12:59 pm

    Thanks for your info… nice post

  • new era hats
    July 14th, 2011 at 4:49 pm

    Thanks for your sharing….nice post

  • Oakley Sunglasses
    July 14th, 2011 at 6:49 pm

    sadasd ad asda

  • web development services
    July 16th, 2011 at 3:07 pm

    Really i appreciate the effort you made to share the knowledge.The topic here i found was really effective to the topic which i was researching for a long time..