Would it be possible to create a program (.NET preferably) to create a virtual drive letter, but when it is read, written to, or browsed an independent program deals with what is returned?
Although you could do it by mapping a drive to a TCP server, webDAV or something like that, I’m wondering if it could be done with internal links.
This would be used for protected storage. The program does stream encryption and decryption of all the files in the drive (as they’re read by all kinds of programs) if the program has had a password put into it.
What you’re talking about is a storage device driver, which is how programs such as Daemon Tools and TrueCrypt accomplish such “virtual” drives.
You may not have to delve into the kernel to accomplish this, though. Microsoft supply a Windows User-Mode Driver Framework, which is designed to simplify the development of certain common Windows driver types. From what I can tell, you should be able to develop a virtual storage driver using the user-mode driver framework. As long as you’re not directly interacting with hardware (like a kernel-mode device driver does), you should be fine. However, you won’t be able to do this in C#. You’d probably have to use C, though you might get away with C++.