views:

420

answers:

5

I've recalled using little 'filesystems' before that basically provided an interface to something else. For example, I believe there was a GMail filesystem that created an entry in My Computer and could be used like any other drive on your local computer. How can I go about implementing something like this in C++? Thank you!

+1  A: 

This may be a starting point to extending NTFS in the way that the GMail filesystem used to do: Windows NT reparse points.

Tarydon
+8  A: 

Writing an actual file-system involves writing a driver; which means kernel-mode code (scary stuff) and paying for getting the IFS DDK. (edit: looks like they don't charge for it anymore)

What you probably want is a “namespace extension”. Try this: The Complete Idiot's Guide to Writing Namespace Extensions - CodeProject

Nicolás
Not really :) It was like... first Google result.
Nicolás
+1 for calling him a complete idiot :)
Mk12
oh you already answered
Mk12
+4  A: 

Try Dokan. It's like FUSE, except for Windows. I think there are certain limitations to namespace extensions, like they cannot be accessed from the command line, but I'm really not sure as of now.

blwy10
Dokan really is like FUSE. Basically: someone took the effort of writing the messy IFS kernel-mode code for you, and let you access it from user mode.
Nicolás
This is **exactly** what I needed. Thank you so much!
Null
+1  A: 

Hello,

The GMail Filesystem is just the name given; it is not any filesystem as such. It is just a namespace extension for Windows Explorer that links with the GMail account of yours!

I dont know exactly what you are trying to do, but in anyway, I believe, the following link will be of some use to you:

http://msdn.microsoft.com/en-us/magazine/cc188741.aspx

Srivatsan Iyer
A: 

You can always create one huge file in Windows and use that to contain your filesystem. Otherwise most computers don't appreciate one filesystem within another. Many will allow filesystems to coexist, but generally once the OS is established, there will only be one.

Thomas Matthews
that assertion is untrue for unix-based computer (linux, mac, etc); practically every other OS except Windows. In Unix-based system, you can mount a directory that comes from a different filesystem, different harddisk, or even from different computer (using network file system).
Lie Ryan