> ----------
From: xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com] on behalf of Olof Lagerkvist[SMTP:xxxxx@ltr-data.se]
Reply To: Windows System Software Devs Interest List
Sent: Tuesday, January 29, 2008 8:11 PM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Virtual Disk Driver
But again it surprised me a lot
that there were any similarities at all found and I am now just guessing
and this should not be taken as a final explanation, simply because I
don’t (and too bad cannot) know for sure.
I’d recommend to do the same as I did. Use some good file compare tool and look at it. Beyond Compare has free 30-days trial version.
Anyway, I am still absolutely sure that any kind of deeper look at the
source codes should make it obvious that ImDisk is not based on FileDisk.
I’m sorry but my conclusion was different. It looks like somebody took FileDisk sources long time before, changed and added a lot but original root was the same. Look at DriverEntry and dispatch entry points. The same local variables, the same blocks of code. Compare IOCTL processing. One example: IOCTL_DISK_SET_PARTITION_INFO. Completely equal except KdPrint statements added in imdisk.c. And more and more. Identifier names don’t follow DDK samples convention. BTW, order of functions is also very similar which is the reason why compare tool can find so many similarities.
The really frustrating thing for myself (and of course for many of the
commercial spin-offs from ImDisk) is that discussions like this was
exactly what I did not want and of course was the biggest reason why I
decided to write something from scratch instead (well, some not
disk-related stuff came from my other device driver projects, for
example the ugly named-pipe communication between kernel and user mode,
but anyway). But now, here we are anyway and all I can do is hope that
most people believe me, *sigh*…
Only if they can read your explanation, sorry.
> As a side note, we have now discontinued product based on the same
> technique. We also have one control device and virtual devices created
> on demand. The interesting things happen when you want to multiple user
> sessions and fast user switching 
That detail gave me a lot of headake until I found the current solution
I use.
For me it seems as the only logical way 
Not that my solution is particularily robust or good-looking but
at least it works in most cases. 
I assume you now have a virtual SCSI-port based product instead that
more or less automatically gives support for mount manager etc…
No, we discontinued it completely because it has some drawbacks (fixed space hard to resize for example) and somebody at marketing believed there is a better solution. There are new drawbacks, of course, but that’s different story 
If I should solve this problem again, I would use the same solution instead of virtual SCSI miniport. I don’t see any real advantage of the second way. This one is simple, works well and has all necessary functionality from user’s point of view. As a user creating virtual driver on demand is exactly what I want and don’t care about Mount Manager at all.
Best regards,
Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]