Dokan.NET 0.1.8 released
June 10th, 2008 in .NET
Dokan.NET 0.1.8 is now released.
Dokan.NET is a .NET binding of user-mode file system library Dokan. You can write your own Windows file system in C#, VB.NET…
Changes from 0.1.7
- Added UseKeepAlive option to DokanOptions
- Added some error constants
Domain name is changed to dokan-dev.net
Hi
I couldn’t see the DeviceIO method in DokanOperation interface. Will it be added in a next release or is it too hard ?
thanks, again, it’s a very good work !
Hello,
I read documents about DeviceIoControl but I have no idea how to be used by file recovery softwares. I think they phisicaly access to disk drive, and not to file system. Do you know what control codes are needed for file system to support those softwares?
No, I don’t know. Sorry. But i’m actualy trying to make an app to access MTP devices with a filesystem and not in shell namespace extension. I’ve seen in the main interface in the MTP SDK that a method exists to directly execute a DeviceIO command on the player. I think if I just forward commands from your virtual filesystem directly to the player I’ll get a direct access to it. That’s why i’d need this to be implemented if it’s possible.
Thanks.
(ps : for recovery software, some of them are able to use the existing filesystem to recover deleted files. i think they do it via this method to.)
Hello,
I understand what you want to do, but I still have some questions.
I think the flow of access is an app > Your file system > MTP > player, and your file system accesses a player via MTP SDK. Is this right? In my understanding, MTP calls DeviceIoControl to the player not file system.
Thanks,
Not exactly.
MTP is a set of commands (an extension of PTP) which are executed by the player itself which return some data after. The DeviceIoControl is just one of these commands and may help me to make a FS easily, but I don’t know if it’ll work. I’d just like to test, but i can’t without your help :p . Thanks
Hi Hiroki,
I have yet another problem
I am getting a BSOD when delaying the ReadFile function.
The scenario is as follows: I have a remote file, which I am opening with local program. As long as I just use the Windows Explorer to browse the remote files, but as soon as I try to open the remote file with e.g. Photoshop I get the BSOD. I guess it’s because I cannot hand back the picture to Photoshop right away but have to download it to a local temp folder first. Could this delay cause the BSOD?
Regards
Oh….and where did the comments-feeds go? They were very useful for following up on discussions/responses. Could you please bring them back?
Hello, Sebastian
Could you send me the crush dump file? Is is located under C:\Windows\Minidump
Hi, Sebastian
I added comments feed bottom of pages.
Hi Hiroki,
unfortunately, there is no such file under C:\Windows\Minidump. The directory is empty. I checked my system settings for “Startup and Recovery” and they seem to be right (Small dump directory: %SystemRoot%\Minidump).
The exact BSOD message is as follows:
STOP:c000021a {Fatal System Error}
The Windows subsystem process terminated unexpectedly with a status of 0×0000006 (0x7c921a9d 0x0156f264).
The system has been shut down.
Hi, Sebastian
Thank you for your comments, but I can’t fix bug without crash dump file. When you find it, please mail me.
Hi!
i’m getting GetFileInformation calls with \\ as an argument, is this normal? \\ is no file, is the correct behavoir to return -1?
Hello, Peter
Explorer or other programs are trying to open root directory(root of drive). It should be succeed.
thanks for the fast reply, dokan is really cool!!! I think something like a wiki about Dokan would be nice. So we could collect examples and usefull information about Dokan and filesystems.
Any new idea about the DeviceIOControl ?
i’m sorry if i ask it everyday, just tell me if it won’t be implemented.
thanks
Hello, dvkch
I’d like to support IO control codes on Dokan if they are really needed and used.
I think handling specific IO control codes is not so hard to implement. But it is not easy to handle generic code types because the ways to use buffer are different for each control codes. If supporting IO control codes make Dokan unstable, I don’t want to add it.
I’ll check it is possible or not this weekend.
BTW, I can’t still understand MTP. As far as I read MTP documentation, MTP is a device and not a file system. I found that MTP is implemented as user-mode USB storage driver which is not seen as a drive.
You are trying to make a MTP device using Dokan library? or mount a MTV device as a drive? Where device control code comes from to your file system?
Sorry for many questions, I want to figure out what you really want to do and what can I do for it.
Hi Hiroki,
I have yet another question
The Dokan library doc says for the the parameter “DokanFileInfo info” of the CreateFile function:
“Context :
a specific value assigned by the file system application. File system application can freely use this variable to store values that are constant in a file access session (the period from CreateFile to CloseFile) such as file handle, etc.”
As far as I understand it I can assign info.Context to a value of my choice (e.g. a bool value) in the CreateFile function. This value will be available in all called file-system functions until the file is closed, right?
I tried that and it didn’t work. In CreateFile I do:
if (File.Exists(localPath+filename))
{
bool existsOnlyRemote = false;
info.Context = (object)existsOnlyRemote;
}
When I try to access info.Context in e.g. the ReadFile function afterwards, it is always null. How come?
Regards,
Sebastian
Hi, Sebastian
It was Dokan.NET problem, I released new version of DokanNET. Please try it.
Thanks,
Sorry, i didn’t had an internet connection for a long time :/
My purpose is to mount an MTP device as a drive via DokanLib. I understand that it’s not realy easy to manage generic codes for many reasons; althought i’ve seen a generic function model on the msdn page i sent you last time. But i don’t know which codes i have to handle, because the function in the IWMDMDevice structure is a generic one. I thought that if Windows was calling the same generic function for IO operation on your filesystem, i’ll just have to make a bridge to the MTP struct. Thanks
UP !
last try ….
Cheap Yankee Candles…
[...]here are some links to sites that we link to because we think they are worth visiting[...]…
Buy Yankee Candles at Half Off…
[...]the time to read or visit the content or sites we have linked to below the[...]…
Big Job Site…
[...]while the sites we link to below are completely unrelated to ours, we think they are worth a read, so have a look[...]…
Awesome and interesting information and attractive post.
Yes, the blog is very interesting and I really like.
Hi, listen, I’m pretty new on this blogosphere and Internet thing, so I don’t know if there’s a sort of “subscription” method that I can use in order to receive notifications of your new entries…? Thing is I enjoy reading your blog a lot and I’d like to be up to date with your posts!
Thanks for your sharing….nice post