rewrite of webdav mini-redirector

Given all the problems with the current webdav FS redirector, I’m thinking of rewriting a simple new one that would (among other things) correct for the port problem (i.e. only 80 right now) and the security problem (i.e. no support for https).

I’m new to the WinNT FS driver concept and was hoping you folks might know what the fastest means to start would be (i.e. sample code that gets me halfway there, so-to-speak).

I considered using File SYstem Filters, but those don’t seem to allow for mounting of drive (i.e. get a drive letter in windows explorer) but instead seems to expect the “virtual drive” to already be mounted.

More info: I realize I may need to get the IFS toolkit (not a problem) but a previous post in this forum seem to indicate a steep learning curve and a minimum of 12-months+ development effort (too long for me). Also, such a driver would work at the hard-disk level (sectors, partitions, …) and would actually be way more than required for webdav needs (which are simply a “redirector” for file open/close, read/write, mk dir, and the like).

For this I’m thinking I don’t need to write a whole FS driver from scratch, right?

Alternatively do any of you folks know if a webdav redirector rewrite effort is already done (or underway) either from MS (doubtful) or from some other group/individual (e.g. sourceforge project, which I looked at and found nothing)?

Any help (including pointing me in the right direction) will be very appreciated.

Freddy.

frudman@ix.netcom.com wrote:

More info: I realize I may need to get the IFS toolkit (not a
problem) but a previous post in this forum seem to indicate a steep
learning curve and a minimum of 12-months+ development effort (too
long for me). Also, such a driver would work at the hard-disk level
(sectors, partitions, …) and would actually be way more than
required for webdav needs (which are simply a “redirector” for file
open/close, read/write, mk dir, and the like).

I strongly advise signing up to one of the OSR courses before
undertaking a project of this magnitude. Depending on how complete you
want the implementation to be 12 months is optimistic - writing a driver
is *completely* different to writing userspace.

OTOH I think you’re thinking about this the wrong way. Apache2 can do
this without any kind of driver… I’d imagine IIS can be persuaded to
with the right ISAPI filter.

Tony

Tony,

I’m trying to rewrite the CLIENT side of webdav, not the server side. Sorry, I realize I didn’t make that clear on my original post. In other words, the mini-redirector itself, not the webdav sever side.

The idea is that from any windows client machine, a user would be able to (for example) map a drive letter to the fictitious/virtual hard drive that happens to be a “mapped webdav drive” on some remote server.

FYI: the rewritting of the webdav server part (which I happen to be working on now) is farily simple, even unncessary since there are many compliant-enough webdav server stacks out there (IIS 5/6 is not one of them).

Freddy.

frudman@ix.netcom.com wrote:

I’m trying to rewrite the CLIENT side of webdav, not the server side.
Sorry, I realize I didn’t make that clear on my original post. In
other words, the mini-redirector itself, not the webdav sever side.

Hmm… OK… you might be better with a userspace shell extension. It
wouldn’t look like a drive but from the users point of view looking via
explorer it would be seamless (the same way zip folders work).

Writing the kind of driver you’re after is going to take a long time.
For billing purposes I’d allocate 6-9 months to write it plus a month
beforehand to learn the driver API… you might be able to get away with
faster but drivers come back to bite you in the ass if you try to skimp
on the detail.

Tony

“Tony Hoyle” wrote in message news:xxxxx@ntfsd…
> Writing the kind of driver you’re after is going to take a long time. For
> billing purposes I’d allocate 6-9 months to write it plus a month
> beforehand to learn the driver API… you might be able to get away with
> faster but drivers come back to bite you in the ass if you try to skimp
> on the detail.
>
Tony,

You are being low ball on this. You have to a heck of a lot of work,
unless things have gotten easier in the last few years, just getting a good
XML parser running in the kernel and supporting all the variants of the
data types will take you a heck of a long time. That assumes you are
knowledgeable with the mini-redirector model and its quirks. Testing is
huge, because of the loosness of the WebDAV spec, where any of N ways can
be used in XML to specify things (and N is large and every WebDAV server
side does it differently), means that once you have it working on one
service, you can still have a ton of work for the next.

Assuming a knowledgeable file system type, I would start the
guesstimate at 15 months, and if you wanted a fixed priice double that.
This is from my experiiences in doing WebDAV for NT 4.0, I didn’t finish
the contract the customer pulled the plug on the division.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
http://www.windrvr.com
Remove StopSpam from the email to reply

Don Burn wrote:

You are being low ball on this. You have to a heck of a lot of work,

I was trying not to put the guy off too much :slight_smile: I underestimated a bit
too (figured 12 months at the outside).

unless things have gotten easier in the last few years, just getting a good
XML parser running in the kernel and supporting all the variants of the
data types will take you a heck of a long time. That assumes you are
knowledgeable with the mini-redirector model and its quirks. Testing is
huge, because of the loosness of the WebDAV spec, where any of N ways can
be used in XML to specify things (and N is large and every WebDAV server
side does it differently), means that once you have it working on one
service, you can still have a ton of work for the next.

webdav is a bit of a behemoth if you try for a full implementation.

You define narrow limits eg. you’re going to support apache and IIS
servers only, then support those. Go for 98% of the market and forget
the 2% because it’s not cost effective to support them.

Assuming a knowledgeable file system type, I would start the
guesstimate at 15 months, and if you wanted a fixed priice double that.
This is from my experiiences in doing WebDAV for NT 4.0, I didn’t finish
the contract the customer pulled the plug on the division.

It *should* be possible to push large parts of it to userspace these
days… not that I’ve ever worked on a redirector myself so I might be
wrong.

Tony

“Tony Hoyle” wrote in message news:xxxxx@ntfsd…
>
> It should be possible to push large parts of it to userspace these
> days… not that I’ve ever worked on a redirector myself so I might be
> wrong.
>

I know StorageCraft had an attempt for a user mode filesystem using the
mini-redirector maybe that was successful. The two attempts I know more
about were spectacular failures, there is just a lot of problems and tricks
to get everthing stable in user space. My work was pure kernel, in part
because of the know failures.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
http://www.windrvr.com
Remove StopSpam from the email to reply

First, thank you all for these replies. Here’s what I’m getting from them:

  1. Writing kernel-mode driver software is very hard and time-consuming;
    Question: is it realistic to use a skeleton driver (e.g. FileDisk from http://www.acc.umu.se/~bosse/ or HttpDisk also from http://www.acc.umu.se/~bosse/) and pass on all important high-level requests (e.g. open file) to a user-mode counterpart. I ask because I’m considering (and have extremely high expertise in) writing that using .net/C# for what is fairly straightforward (i.e. the client-side of the webdav protocol). And FYI: I do intend to implement just enough of THAT to allow for simple interaction with standard-compliant webdav servers (as much as that’s currently possible :slight_smile:

  2. Is there a book (or 2!) I can buy that would give me both the introcudction/overview for writing such drivers (kernel and user mode) as well as the nitty-grtty details if I do choose to force my way through the ordeal? Recommendations very welcome.

  3. Any solution would work, including the suggestions to write shell extensions a-la-Zip file format. Where can I get information about that?

  4. Is there in fact a miniredirector guide/protocol defined anywhere that I might consult in order to write/rewrite or even enhnace (e.g. MS’ webdav mini-redirector) or is this a one off piece of software written by MS for the sole purpose of http/webdav (in other words, rather than writing a file system/HD driver, could I just implement a [possibly user-mode] redirector? And if so, where would that info be kept? (I’m an MSDN universal subscriber and didn’t find anything on MS’s MSDN site/CDs about this stuff: perhaps I’m looking at the wrong place)

Also to Tony: agreed about the feature set implementation for webdav: I’m only looking for enough to make the MS implementation work the way it was intended (including proprietary extensions such as the translate: f features. I’m not interested in a Full/Compliant implementation of webdav client (nor, I believe is such a thing even possible today since the standard itself is so vague on so many issues). I simply need a facility that users can depend on without having to deal with the bugs and quirks of MS’s implementation and its lack of security (i.e. no room for https: which, interestingly, seems to be supported in its sister implementation, web folders)

Freddy.

Addition to my last post: I’ve been looking at writing a driver not a mini filter. Can in fact a mini-filter be what I’m looking for? I don’t see it becuase I need to give users the ability to create arbitratry drive letters to mount a remote webdav volume but perhaps I’m simply not understanding the capabilities of a web filter.

To Don Burn: I went to StorageCraft’s site but it seems to be a commercial consulting site. Didn’t see anything about a user-mode redirector. Do you have more specific info about that?

Freddy.

As far as I know the user mode redirector was pulled. On Filedisk (and
Bosse code in general) be aware that file disk was stolen. Search the
NTDEV archives and you can see the much of thr story on Bosse.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
http://www.windrvr.com
Remove StopSpam from the email to reply

wrote in message news:xxxxx@ntfsd…
> To Don Burn: I went to StorageCraft’s site but it seems to be a
> commercial consulting site. Didn’t see anything about a user-mode
> redirector. Do you have more specific info about that?
>
> Freddy.
>

> I know StorageCraft had an attempt for a user mode filesystem using the

mini-redirector maybe that was successful.

No, we did not use RDBSS, we used the kmode FSD which used inverted call to
proxy all requests to a user mode service.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

> To Don Burn: I went to StorageCraft’s site but it seems to be a commercial

consulting site. Didn’t see anything about a user-mode redirector.

The product is suspended for now, since all our resources are devoted to
another projects.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com