How to make one device look like two?

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

If you can alter the firmware in your device could you just add a second
LUN to it?

-p

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
Sent: Saturday, June 04, 2005 9:42 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] How to make one device look like two?

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


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Good idea, and if it was really SCSI, then that would do it. But the interface is actually
SATA, and we want just one SATA connection to the device, and SATA does not
support multiple LUNs under a single Target.

“Peter Wieland” wrote in message news:xxxxx@ntdev…
If you can alter the firmware in your device could you just add a second
LUN to it?

-p

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
Sent: Saturday, June 04, 2005 9:42 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] How to make one device look like two?

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


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

It sounds like instead of adding yourself as a filter driver, you
install your driver as the function driver, replacing the class driver.
Then, you enumerate 2 PDOs. One for the original class driver, one for
your 2nd function.

d

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
Sent: Sunday, June 05, 2005 9:07 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] How to make one device look like two?

Good idea, and if it was really SCSI, then that would do it. But the
interface is actually
SATA, and we want just one SATA connection to the device, and SATA does
not
support multiple LUNs under a single Target.

“Peter Wieland” wrote in message
news:xxxxx@ntdev…
If you can alter the firmware in your device could you just add a second
LUN to it?

-p

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
Sent: Saturday, June 04, 2005 9:42 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] How to make one device look like two?

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


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Thanks for the suggestion, but we wanted to avoid this by using existing class drivers.

I need to basically “synthesize” a new device that can be utilized by an existing class driver.

I may be looking at doing something like the Bus Enumerator part of Toaster.

“Doron Holan” wrote in message news:xxxxx@ntdev…
It sounds like instead of adding yourself as a filter driver, you
install your driver as the function driver, replacing the class driver.
Then, you enumerate 2 PDOs. One for the original class driver, one for
your 2nd function.

d

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
Sent: Sunday, June 05, 2005 9:07 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] How to make one device look like two?

Good idea, and if it was really SCSI, then that would do it. But the
interface is actually
SATA, and we want just one SATA connection to the device, and SATA does
not
support multiple LUNs under a single Target.

“Peter Wieland” wrote in message
news:xxxxx@ntdev…
If you can alter the firmware in your device could you just add a second
LUN to it?

-p

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
Sent: Saturday, June 04, 2005 9:42 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] How to make one device look like two?

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


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

You’ll need to build a bus driver that sits between your device and the
existing class driver. This would enumerate two PDOs for the device.

-p

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
Sent: Monday, June 06, 2005 8:45 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] How to make one device look like two?

Thanks for the suggestion, but we wanted to avoid this by
using existing class drivers.

I need to basically “synthesize” a new device that can be
utilized by an existing class driver.

I may be looking at doing something like the Bus Enumerator
part of Toaster.

“Doron Holan” wrote in message
> news:xxxxx@ntdev…
> It sounds like instead of adding yourself as a filter driver,
> you install your driver as the function driver, replacing the
> class driver.
> Then, you enumerate 2 PDOs. One for the original class
> driver, one for your 2nd function.
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
> Sent: Sunday, June 05, 2005 9:07 AM
> To: Windows System Software Devs Interest List
> Subject: Re:[ntdev] How to make one device look like two?
>
>
> Good idea, and if it was really SCSI, then that would do it.
> But the interface is actually SATA, and we want just one SATA
> connection to the device, and SATA does not support multiple
> LUNs under a single Target.
>
>
>
> “Peter Wieland” wrote in
> message news:xxxxx@ntdev…
> If you can alter the firmware in your device could you just
> add a second LUN to it?
>
> -p
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
> Sent: Saturday, June 04, 2005 9:42 AM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] How to make one device look like two?
>
>
>
> 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
>
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as:
> xxxxx@windows.microsoft.com To unsubscribe send a blank
> email to xxxxx@lists.osr.com
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as:
> xxxxx@windows.microsoft.com To unsubscribe send a blank
> email to xxxxx@lists.osr.com
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as:
> xxxxx@windows.microsoft.com To unsubscribe send a blank
> email to xxxxx@lists.osr.com
>

What is your shipping date? If it is later this year, then you should
consider joining the KMDF beta and writing a KMDF driver to write your
bus driver.

d

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Peter Wieland
Sent: Monday, June 06, 2005 9:01 AM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] How to make one device look like two?

You’ll need to build a bus driver that sits between your device and the
existing class driver. This would enumerate two PDOs for the device.

-p

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
Sent: Monday, June 06, 2005 8:45 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] How to make one device look like two?

Thanks for the suggestion, but we wanted to avoid this by
using existing class drivers.

I need to basically “synthesize” a new device that can be
utilized by an existing class driver.

I may be looking at doing something like the Bus Enumerator
part of Toaster.

“Doron Holan” wrote in message
> news:xxxxx@ntdev…
> It sounds like instead of adding yourself as a filter driver,
> you install your driver as the function driver, replacing the
> class driver.
> Then, you enumerate 2 PDOs. One for the original class
> driver, one for your 2nd function.
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
> Sent: Sunday, June 05, 2005 9:07 AM
> To: Windows System Software Devs Interest List
> Subject: Re:[ntdev] How to make one device look like two?
>
>
> Good idea, and if it was really SCSI, then that would do it.
> But the interface is actually SATA, and we want just one SATA
> connection to the device, and SATA does not support multiple
> LUNs under a single Target.
>
>
>
> “Peter Wieland” wrote in
> message news:xxxxx@ntdev…
> If you can alter the firmware in your device could you just
> add a second LUN to it?
>
> -p
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
> Sent: Saturday, June 04, 2005 9:42 AM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] How to make one device look like two?
>
>
>
> 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
>
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as:
> xxxxx@windows.microsoft.com To unsubscribe send a blank
> email to xxxxx@lists.osr.com
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as:
> xxxxx@windows.microsoft.com To unsubscribe send a blank
> email to xxxxx@lists.osr.com
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as:
> xxxxx@windows.microsoft.com To unsubscribe send a blank
> email to xxxxx@lists.osr.com
>


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument:
‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com

But by doing that, “synthsizing a new device”, you have half the solution of
a bus driver driver anyway. Simply do the bus-driver and be done with it.
Doing the half-assed solution will probably end up in a bus driver anyway.
:slight_smile:


Gary G. Little

“Don Matthews” wrote in message news:xxxxx@ntdev…
>
> Thanks for the suggestion, but we wanted to avoid this by using existing
> class drivers.
>
> I need to basically “synthesize” a new device that can be utilized by an
> existing class driver.
>
> I may be looking at doing something like the Bus Enumerator part of
> Toaster.
>
>
>
>
> “Doron Holan” wrote in message
> news:xxxxx@ntdev…
> It sounds like instead of adding yourself as a filter driver, you
> install your driver as the function driver, replacing the class driver.
> Then, you enumerate 2 PDOs. One for the original class driver, one for
> your 2nd function.
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
> Sent: Sunday, June 05, 2005 9:07 AM
> To: Windows System Software Devs Interest List
> Subject: Re:[ntdev] How to make one device look like two?
>
>
> Good idea, and if it was really SCSI, then that would do it. But the
> interface is actually
> SATA, and we want just one SATA connection to the device, and SATA does
> not
> support multiple LUNs under a single Target.
>
>
>
> “Peter Wieland” wrote in message
> news:xxxxx@ntdev…
> If you can alter the firmware in your device could you just add a second
> LUN to it?
>
> -p
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Don Matthews
> Sent: Saturday, June 04, 2005 9:42 AM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] How to make one device look like two?
>
>
>
> 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
>
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>
>
>