I have a storage device that sits on a storage bus and gets enumerated by
Windows as a single device. For the sake of discussion, let’s just say this
device is a SCSI device, and that it presents one LUN at a single Target ID.
So let’s assume the system sees a single device at Port2, Bus0, Target0,
Lun0.
The port / miniport driver will enumerate this single device and Windows
will invoke the appropriate class driver. What I would like to do, if
possible, is to insert a filter driver between the port layer and the class
layer that intercepts requests to this device. I would then like my filter
driver to have the ability to make the system think that there was not just
a single device, but actually two devices. And the second device, this
“virtual” device, may be of a different class than the original. So going
back to our assumptions, let’s say the “real” device is at Port2, Bus0,
Target0, Lun0, and the new “virtual” device is at Port2, Bus0, Target0,
Lun1. I want both devices to be seen by the system.
To summarize, I want to use existing class drivers and existing port
drivers. But I want to create a filter driver that makes one device of a
certain device type look like two devices, where the second device has a
different device type.
In your opinion, what is the best way to do this? Is it even possible to do
this with a single filter driver, or do I need other components as well? By
the way, just so you know, I do have the ability to modify the firmware in
my device. But as I said, I do not want to have to modify existing Windows
port drivers or class drivers. I’d like to limit my Windows programming to
the addition of a filter driver or other software that I supply with the
solution.
Thanks,
Don