Here at OSR we refer to these as “pseudo file systems”. One of the more
interesting pseudo file systems we ever constructed was backed by the
bit-bucket: writes were discarded, reads zeroed the caller’s read
buffer, directory structure was maintained in memory. It was amazing
how long the data would still be there (in the cache, of course).
But we’ve seen all sorts of pseudo file systems of the type you
describe. The file systems interface that we discuss here in NTFSD is
mostly related to the upper edge (from the I/O Manager and other OS
components) and the side edge (into the cache and associated
interactions) but not very much about the lower edge (where the data
actually is stored).
Network redirectors need not provide an NP - that just means the
redirector in question doesn’t support dynamic drive connection, which
would explain the comments you made about the drive letter symbolic link
it creates - that is how apps find this drive. Using the
mini-redirector framework might ease your implementation (I’ve not done
it, so I can’t honestly say one way or the other.)
At one point (meaning I am not sure if it is still there), Microsoft
Research distributed a user mode file system - it was a “reflector”
model that took kernel mode requests and sent them to user mode. That
is a good model for pseudo file systems, but is horrible if you decide
you want to store anything that might be needed by Win32, since this
leads to interesting and bizarre deadlocks.
Good luck. If you continue down this road, we’ll no doubt be hearing
more from you!
Regards,
Tony
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
Looking forward to seeing you at the Next OSR File Systems Class October
18, 2004 in Silicon Valley!
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Jacob
Sent: Friday, May 21, 2004 9:10 AM
To: ntfsd redirect
Subject: [ntfsd] File system driver. How to begin
Hello.
I’m going to write virtual FS driver (without underlying device) to do
the job similar to what Exchange server’s BackOfficeStorage (drive M:;
driver exifs.sys) does (similar but not exactly the same, therefore the
need for development). My question is about general relationsips between
things: what should I do in my driver in order to have the same effect.
exifs creates symbolic links (??\BackOfficeStorage points to
\Device\ExchangeIfsDevice and M: points to ??\BackOfficeStorage;
\Device\ExchangeIfsDevice is created by exifs).
Are the two links enough for the system to think that M: is filesystem
and send to the driver all the file-related IRPs?
Also this driver (exifs) calls RxRegisterMinirdr so it seems to be
network filesystem driver, but it doesn’ seem to have accompanying
provider dll (I’ve compared it with nulmrx sample from DDK; provider dll
means something registered in
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Orde
r).
So, my questions are:
- how to implement such a thing in general (FS driver without
underlying block device) - network file system or…? Architectural
outline.
- if network file system - what is the role of “Network Provider”?
Jacob
Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17
You are currently subscribed to ntfsd as: xxxxx@osr.com
To unsubscribe send a blank email to xxxxx@lists.osr.com