Bus filter driver example

Hi!

I’m seeking good example of bus filter driver.
Does anybody know how to write such kind of driver?

Thanks,

Sergey.


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Look at Toaster example into DDK.

Regards,
Dennis.

----- Original Message -----
From: “Sergey Kipnis”
To: “NT Developers Interest List”
Sent: Tuesday, September 11, 2001 5:48 PM
Subject: [ntdev] Bus filter driver example

> Hi!
>
> I’m seeking good example of bus filter driver.
> Does anybody know how to write such kind of driver?
>
> Thanks,
>
> Sergey.
>
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@acronis.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Hello Dennis,

Tuesday, September 11, 2001, 3:54:07 PM, you wrote:

I’m not sure that this is bus filter driver example, at least

  1. in NT DDK help I had found only one type of bus filter driver

bus filter driver
|
|
v
bus driver
I can see in the example two drivers BfdoLwr and BfdoUpr

  1. BfdoLwr and BfdoUpr are named as bus FDO filters. Does it matter?

DSD> Look at Toaster example into DDK.

DSD> Regards,
DSD> Dennis.

DSD> ----- Original Message -----
DSD> From: “Sergey Kipnis”
DSD> To: “NT Developers Interest List”
DSD> Sent: Tuesday, September 11, 2001 5:48 PM
DSD> Subject: [ntdev] Bus filter driver example

>> Hi!
>>
>> I’m seeking good example of bus filter driver.
>> Does anybody know how to write such kind of driver?
>>
>> Thanks,
>>
>> Sergey.
>>
>>
>>
>> —
>> You are currently subscribed to ntdev as: xxxxx@acronis.com
>> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>>


Best regards,
Sergey mailto:kipnis@wp.pl


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

The Toaster example includes a bus driver and a filter drivers. The latest
will be found in the DDK for the RTM release of Windows XP

Gary G. Little
Staff Engineer
Broadband Storage, Inc.
xxxxx@broadstor.com

-----Original Message-----
From: Sergey Kipnis [mailto:kipnis@wp.pl]
Sent: Tuesday, September 11, 2001 8:18 AM
To: NT Developers Interest List
Subject: [ntdev] Re: Bus filter driver example

Hello Dennis,

Tuesday, September 11, 2001, 3:54:07 PM, you wrote:

I’m not sure that this is bus filter driver example, at least

  1. in NT DDK help I had found only one type of bus filter driver

bus filter driver
|
|
v
bus driver
I can see in the example two drivers BfdoLwr and BfdoUpr

  1. BfdoLwr and BfdoUpr are named as bus FDO filters. Does it matter?

DSD> Look at Toaster example into DDK.

DSD> Regards,
DSD> Dennis.

DSD> ----- Original Message -----
DSD> From: “Sergey Kipnis”
DSD> To: “NT Developers Interest List”
DSD> Sent: Tuesday, September 11, 2001 5:48 PM
DSD> Subject: [ntdev] Bus filter driver example

>> Hi!
>>
>> I’m seeking good example of bus filter driver.
>> Does anybody know how to write such kind of driver?
>>
>> Thanks,
>>
>> Sergey.
>>
>>
>>
>> —
>> You are currently subscribed to ntdev as: xxxxx@acronis.com
>> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>>


Best regards,
Sergey mailto:kipnis@wp.pl


You are currently subscribed to ntdev as: xxxxx@broadstor.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

The Toaster sample does not contain a bus filter driver as I would define
it. It contains a bus FDO filter. I have never seen an example of a bus
filter driver anywhere that handles PDOs. To filter the FDO of a bus
driver is about the same as filtering any FDO, but filtering the PDOs for a
bus driver, is a difficult task. True bus filter drivers are not supported
by Microsoft, although I wouldn’t let that stop me if I needed one. I
would imagine they are not supported due to their complexity. If there is
another reason, I would love to know what it is so I can enlighten my
customers when they ask. Anyway, you can search the kernel mode newsgroup
as I know there was a discussion on this topic that was quite enlightening
not too far back. Still no example though.

Bill McKenzie
Software Engineer
bSquare Corporation

On 09/11/01, “Gary Little ” wrote:
> The Toaster example includes a bus driver and a filter drivers. The latest
> will be found in the DDK for the RTM release of Windows XP
>
> Gary G. Little
> Staff Engineer
> Broadband Storage, Inc.
> xxxxx@broadstor.com
>
> -----Original Message-----
> From: Sergey Kipnis [mailto:kipnis@wp.pl]
> Sent: Tuesday, September 11, 2001 8:18 AM
> To: NT Developers Interest List
> Subject: [ntdev] Re: Bus filter driver example
>
> Hello Dennis,
>
> Tuesday, September 11, 2001, 3:54:07 PM, you wrote:
>
> I’m not sure that this is bus filter driver example, at least
> 1. in NT DDK help I had found only one type of bus filter driver
>
> bus filter driver
> |
> |
> v
> bus driver
> I can see in the example two drivers BfdoLwr and BfdoUpr
>
> 2. BfdoLwr and BfdoUpr are named as bus FDO filters. Does it matter?
>
>
>
>
> DSD> Look at Toaster example into DDK.
>
> DSD> Regards,
> DSD> Dennis.
>
> DSD> ----- Original Message -----
> DSD> From: “Sergey Kipnis”
> DSD> To: “NT Developers Interest List”
> DSD> Sent: Tuesday, September 11, 2001 5:48 PM
> DSD> Subject: [ntdev] Bus filter driver example
>
>
> >> Hi!
> >>
> >> I’m seeking good example of bus filter driver.
> >> Does anybody know how to write such kind of driver?
> >>
> >> Thanks,
> >>
> >> Sergey.
> >>
> >>
> >>
> >> —
> >> You are currently subscribed to ntdev as: xxxxx@acronis.com
> >> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> >>
>
>
>
> –
> Best regards,
> Sergey mailto:kipnis@wp.pl
>
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@broadstor.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
> —
> You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

That’s right there two bus driver filter types.
First of them is lower and its located between bus driver FDO and bus driver
PDO (don’t confuse with bus driver child PDOs),
second is upper and its located above bus driver FDO.
So the device stack look like this:
Upper Filter
|
Bus Driver FDO - created by bus driver into AddDevice routine
|
Lower Filter
|
Bus Driver PDO - typically created by driver that enumerates devices located
on the corresponding bus

Regards,
Dennis.

----- Original Message -----
From: “Sergey Kipnis”
To: “NT Developers Interest List”
Sent: Tuesday, September 11, 2001 7:17 PM
Subject: [ntdev] Re: Bus filter driver example

> Hello Dennis,
>
> Tuesday, September 11, 2001, 3:54:07 PM, you wrote:
>
> I’m not sure that this is bus filter driver example, at least
> 1. in NT DDK help I had found only one type of bus filter driver
>
> bus filter driver
> |
> |
> v
> bus driver
> I can see in the example two drivers BfdoLwr and BfdoUpr
>
> 2. BfdoLwr and BfdoUpr are named as bus FDO filters. Does it matter?
>
>
>
>
> DSD> Look at Toaster example into DDK.
>
> DSD> Regards,
> DSD> Dennis.
>
> DSD> ----- Original Message -----
> DSD> From: “Sergey Kipnis”
> DSD> To: “NT Developers Interest List”
> DSD> Sent: Tuesday, September 11, 2001 5:48 PM
> DSD> Subject: [ntdev] Bus filter driver example
>
>
> >> Hi!
> >>
> >> I’m seeking good example of bus filter driver.
> >> Does anybody know how to write such kind of driver?
> >>
> >> Thanks,
> >>
> >> Sergey.
> >>
> >>
> >>
> >> —
> >> You are currently subscribed to ntdev as: xxxxx@acronis.com
> >> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> >>
>
>
>
> –
> Best regards,
> Sergey mailto:kipnis@wp.pl
>
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@acronis.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Hello Dennis,

Wednesday, September 12, 2001, 7:44:09 AM, you wrote:

Thank you everything is absolutely clear. The only question( for my
confidence) I have is
“Why does NT DDK mean that there is only ‘bus filter driver’?”

May I treat this term, ‘bus filter driver’, as either ‘bus FDO lower
filter’ or ‘bus FDO upper filter’? And when somebody is speking about
‘bus lower filter’ I have to understand that in fact it is ‘bus FDO lower
filter’?

DSD> That’s right there two bus driver filter types.
DSD> First of them is lower and its located between bus driver FDO and bus driver
DSD> PDO (don’t confuse with bus driver child PDOs),
DSD> second is upper and its located above bus driver FDO.
DSD> So the device stack look like this:
DSD> Upper Filter
DSD> |
DSD> Bus Driver FDO - created by bus driver into AddDevice routine
DSD> |
DSD> Lower Filter
DSD> |
DSD> Bus Driver PDO - typically created by driver that enumerates devices located
DSD> on the corresponding bus

DSD> Regards,
DSD> Dennis.

DSD> ----- Original Message -----
DSD> From: “Sergey Kipnis”
DSD> To: “NT Developers Interest List”
DSD> Sent: Tuesday, September 11, 2001 7:17 PM
DSD> Subject: [ntdev] Re: Bus filter driver example

>> Hello Dennis,
>>
>> Tuesday, September 11, 2001, 3:54:07 PM, you wrote:
>>
>> I’m not sure that this is bus filter driver example, at least
>> 1. in NT DDK help I had found only one type of bus filter driver
>>
>> bus filter driver
>> |
>> |
>> v
>> bus driver
>> I can see in the example two drivers BfdoLwr and BfdoUpr
>>
>> 2. BfdoLwr and BfdoUpr are named as bus FDO filters. Does it matter?
>>
>>
>>
>>
>> DSD> Look at Toaster example into DDK.
>>
>> DSD> Regards,
>> DSD> Dennis.
>>
>> DSD> ----- Original Message -----
>> DSD> From: “Sergey Kipnis”
>> DSD> To: “NT Developers Interest List”
>> DSD> Sent: Tuesday, September 11, 2001 5:48 PM
>> DSD> Subject: [ntdev] Bus filter driver example
>>
>>
>> >> Hi!
>> >>
>> >> I’m seeking good example of bus filter driver.
>> >> Does anybody know how to write such kind of driver?
>> >>
>> >> Thanks,
>> >>
>> >> Sergey.
>> >>
>> >>
>> >>
>> >> —
>> >> You are currently subscribed to ntdev as: xxxxx@acronis.com
>> >> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>> >>
>>
>>
>>
>> –
>> Best regards,
>> Sergey mailto:kipnis@wp.pl
>>
>>
>>
>> —
>> You are currently subscribed to ntdev as: xxxxx@acronis.com
>> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>>

DSD> —
DSD> You are currently subscribed to ntdev as: kipnis@wp.pl
DSD> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


Best regards,
Sergey mailto:kipnis@wp.pl


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Sorry I must step in here to clarify before people get confused. A bus FDO
filter driver is just a filter driver that happens to be installed over a
bus FDO versus a regular functional FDO. There is no real mechanical
difference besides that.

A bus filter driver is a driver that filters both the bus FDO AND the bus’s
child PDOs.

A normal filter driver can be either an upper filter or a lower filter as
so:

Seperate cases here:

********** **********
* Upper * * FDO *
* Filter * * *
********** **********
| |
********** **********
* FDO * * Lower *
* * * Filter *
********** **********
| |
********** **********
* PDO * * PDO *
* * * *
********** **********

This is the case whether it is filtering a bus FDO or any FDO.

A bus filter driver on the other hand looks something like this:

All one instance here:

**********
* child *
* FDO *
**********
|
********** *************
* Upper *—* Bus *
* Filter * * Filter DO *
********** *************
| |
********** **********
* Bus *—* Child *
* FDO * * PDO *
********** **********
|
**********
* PDO *
* *
**********

Where the bus filter DO is created by the bus FDO upper filter driver. One
filter DO is created by the upper filter driver for each PDO created by the
bus FDO driver. Hope this clarifies, and I hope my spacing remains in tact
here.

Bill McKenzie
Software Engineer
bSquare Corporation

On 09/12d/01, “Sergey Kipnis ” wrote:
> Hello Dennis,
>
> Wednesday, September 12, 2001, 7:44:09 AM, you wrote:
>
> Thank you everything is absolutely clear. The only question( for my
> confidence) I have is
> “Why does NT DDK mean that there is only ‘bus filter driver’?”
>
> May I treat this term, ‘bus filter driver’, as either ‘bus FDO lower
> filter’ or ‘bus FDO upper filter’? And when somebody is speking about
> ‘bus lower filter’ I have to understand that in fact it is ‘bus FDO lower
> filter’?
>
> DSD> That’s right there two bus driver filter types.
> DSD> First of them is lower and its located between bus driver FDO and bus driver
> DSD> PDO (don’t confuse with bus driver child PDOs),
> DSD> second is upper and its located above bus driver FDO.
> DSD> So the device stack look like this:
> DSD> Upper Filter
> DSD> |
> DSD> Bus Driver FDO - created by bus driver into AddDevice routine
> DSD> |
> DSD> Lower Filter
> DSD> |
> DSD> Bus Driver PDO - typically created by driver that enumerates devices located
> DSD> on the corresponding bus
>
> DSD> Regards,
> DSD> Dennis.
>
> DSD> ----- Original Message -----
> DSD> From: “Sergey Kipnis”
> DSD> To: “NT Developers Interest List”
> DSD> Sent: Tuesday, September 11, 2001 7:17 PM
> DSD> Subject: [ntdev] Re: Bus filter driver example
>
>
> >> Hello Dennis,
> >>
> >> Tuesday, September 11, 2001, 3:54:07 PM, you wrote:
> >>
> >> I’m not sure that this is bus filter driver example, at least
> >> 1. in NT DDK help I had found only one type of bus filter driver
> >>
> >> bus filter driver
> >> |
> >> |
> >> v
> >> bus driver
> >> I can see in the example two drivers BfdoLwr and BfdoUpr
> >>
> >> 2. BfdoLwr and BfdoUpr are named as bus FDO filters. Does it matter?
> >>
> >>
> >>
> >>
> >> DSD> Look at Toaster example into DDK.
> >>
> >> DSD> Regards,
> >> DSD> Dennis.
> >>
> >> DSD> ----- Original Message -----
> >> DSD> From: “Sergey Kipnis”
> >> DSD> To: “NT Developers Interest List”
> >> DSD> Sent: Tuesday, September 11, 2001 5:48 PM
> >> DSD> Subject: [ntdev] Bus filter driver example
> >>
> >>
> >> >> Hi!
> >> >>
> >> >> I’m seeking good example of bus filter driver.
> >> >> Does anybody know how to write such kind of driver?
> >> >>
> >> >> Thanks,
> >> >>
> >> >> Sergey.
> >> >>
> >> >>
> >> >>
> >> >> —
> >> >> You are currently subscribed to ntdev as: xxxxx@acronis.com
> >> >> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> >> >>
> >>
> >>
> >>
> >> –
> >> Best regards,
> >> Sergey mailto:kipnis@wp.pl
> >>
> >>
> >>
> >> —
> >> You are currently subscribed to ntdev as: xxxxx@acronis.com
> >> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> >>
>
>
> DSD> —
> DSD> You are currently subscribed to ntdev as: kipnis@wp.pl
> DSD> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
>
>
>
> –
> Best regards,
> Sergey mailto:kipnis@wp.pl
>
>
>
> —
> You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com