Windows File Systems?
I have finished developing an archive format in managed C# that is way too flexible to be just an archive. I wish to use it as a file system.
It is well organized, very fast, and has both low-level and high-level API functions. It supports on-the-fly encryption and compression, password protection, Windows Explorer-specific file metadata (such as creation/modification/access time and attributes), 2^63 - 1 size HDDs, etc.
If it is possible to make Windows recognize and use my filesystem, I would learn Visual C++ just for the sake of implementing it. Are custom file systems even supported in Windows? (7 is a must, others are optional.) If they are, how do I make/implement them?
If I have to us开发者_Go百科e some 3rd party library, it must be free. I don't want to use CallbackFileSystem because it's not free.
Maybe some readers are curious why I chose not to make my own driver. The reason is signing. Drivers, to work well on 64bit systems (at least my Windows 7) must be signed.
Now, I don't have the money to buy digital certificates from trusted sources... So no drivers for me... I use x64 Windows 7 on most of my machines so it would be an enormous waste to write the driver for x86...Well, it is possible, once I have tried this approach. I've based on these samples: http://www.acc.umu.se/~bosse/
p.s. Also you don't need file system, you need a driver
Yes, it's possible, but you do need Visual C++. File systems are drivers, and they are run natively (in the kernel). The relevant part which you'll need is the Installable File System (IFS) SDK. This is supported on XP, Vista and 7.
Driver programming is a lot harder than normal programming. You have to be a lot more careful with pointers, as they come in different varieties (paged/nonpaged, user/kernel, etc).
It's a great idea to learn driver development, if you managed to create a full-scale filesystem. You would need Windows Driver Kit . OSR offerings are way more expensive than Callback File System and they require kernel-mode development, so they won't be an option for you.
Note that it takes 6 to 12 months for experienced Windows developer to create and debug a complex kernel-mode driver (such as file system driver or filter driver or similar). So be ready for a long development time.
Also you would have to also rewrite your existing file system code in C, which would add to your time to develop the solution. The alternative is to re-implement something that Callback File System does, i.e. call user-mode code for all business logic, but this task is comparable (in term) to rewriting your code in C.
A note regarding http://www.acc.umu.se/~bosse/ -- the drivers presented there require almost complete rewriting. We once used them as a guide when creating first version of our SolFS OS edition product. But we ended up rewriting the driver completely (and having wasted time on initial implementation). There are also rumors about IP problems with that code, but I only read them in OSR mailing list so I can't comment much on this (OSR has mailing list archives if you are interested in details).
精彩评论