filter IRP_MN_QUERY_DEVICE_RELATIONS for root

Hello experts,

I’ve started playing with the toaster sample in the WDK (the WDM version if
it makes any difference) and the first thing I did was to change the filter
sample to be a bus upper filter for the System class
({4D36E97D-E325-11CE-BFC1-08002BE10318}), and added a bit of code to post
IRP_MN_QUERY_DEVICE_RELATIONS to query the device id (IRP_MN_QUERY_ID with
BusQueryHardwareIDs) and print in the debugger it for each PDO returned by
IRP_MN_QUERY_DEVICE_RELATIONS. This way I expect to get a nice list of all
the devices in my machine as it boots.

Now, I’d like to be able to do the same for root enumerated devices (because
it looks like I’m missing those), but I’m not sure how to approach the
issue. I can see how the root bus wouldn’t actually need to be queried by
PNP to figure out its devices list, since it is in a way a virtual bus
implemented by PNP itself (which would mean I can’t use the same approach
because there might not be any IRP_MJ_PNP sent by pnp to the root bus FDO).
On the other hand, I hope that for the sake of a clean architecture it is
actually enumerated like any other bus, which would allow me to filter it
using the same approach.

Based on my investigations, there seems to be an anonymous device created by
the PNP manager that serves as the root bus PDO (or at least I think that’s
the case), so I keep thinking the approach I already have might work if I
find the right way to attach to that bus.

Does all this make sense at all or did I get it all wrong?

How does one filter the root bus ?

Thanks,

Alex.

You can’t bus filter the root bus.

d

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Alex Carp
Sent: Wednesday, March 09, 2011 10:19 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] filter IRP_MN_QUERY_DEVICE_RELATIONS for root

Hello experts,

I’ve started playing with the toaster sample in the WDK (the WDM version if it makes any difference) and the first thing I did was to change the filter sample to be a bus upper filter for the System class ({4D36E97D-E325-11CE-BFC1-08002BE10318}), and added a bit of code to post IRP_MN_QUERY_DEVICE_RELATIONS to query the device id (IRP_MN_QUERY_ID with BusQueryHardwareIDs) and print in the debugger it for each PDO returned by IRP_MN_QUERY_DEVICE_RELATIONS. This way I expect to get a nice list of all the devices in my machine as it boots.

Now, I’d like to be able to do the same for root enumerated devices (because it looks like I’m missing those), but I’m not sure how to approach the issue. I can see how the root bus wouldn’t actually need to be queried by PNP to figure out its devices list, since it is in a way a virtual bus implemented by PNP itself (which would mean I can’t use the same approach because there might not be any IRP_MJ_PNP sent by pnp to the root bus FDO). On the other hand, I hope that for the sake of a clean architecture it is actually enumerated like any other bus, which would allow me to filter it using the same approach.

Based on my investigations, there seems to be an anonymous device created by the PNP manager that serves as the root bus PDO (or at least I think that’s the case), so I keep thinking the approach I already have might work if I find the right way to attach to that bus.

Does all this make sense at all or did I get it all wrong?

How does one filter the root bus ?

Thanks,
Alex.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Thanks Doron!

So is there any other way to see when PDOs get created (or after they get
created) for root enumerated devices or something along those lines other
than bus filtering root ?

Thanks,

Alex.

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Wednesday, March 09, 2011 10:22 AM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] filter IRP_MN_QUERY_DEVICE_RELATIONS for root

You can’t bus filter the root bus.

d

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Alex Carp
Sent: Wednesday, March 09, 2011 10:19 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] filter IRP_MN_QUERY_DEVICE_RELATIONS for root

Hello experts,

I’ve started playing with the toaster sample in the WDK (the WDM version if
it makes any difference) and the first thing I did was to change the filter
sample to be a bus upper filter for the System class
({4D36E97D-E325-11CE-BFC1-08002BE10318}), and added a bit of code to post
IRP_MN_QUERY_DEVICE_RELATIONS to query the device id (IRP_MN_QUERY_ID with
BusQueryHardwareIDs) and print in the debugger it for each PDO returned by
IRP_MN_QUERY_DEVICE_RELATIONS. This way I expect to get a nice list of all
the devices in my machine as it boots.

Now, I’d like to be able to do the same for root enumerated devices (because
it looks like I’m missing those), but I’m not sure how to approach the
issue. I can see how the root bus wouldn’t actually need to be queried by
PNP to figure out its devices list, since it is in a way a virtual bus
implemented by PNP itself (which would mean I can’t use the same approach
because there might not be any IRP_MJ_PNP sent by pnp to the root bus FDO).
On the other hand, I hope that for the sake of a clean architecture it is
actually enumerated like any other bus, which would allow me to filter it
using the same approach.

Based on my investigations, there seems to be an anonymous device created by
the PNP manager that serves as the root bus PDO (or at least I think that’s
the case), so I keep thinking the approach I already have might work if I
find the right way to attach to that bus.

Does all this make sense at all or did I get it all wrong?

How does one filter the root bus ?

Thanks,

Alex.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Nope. Nothing is there.

d

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Alex Carp
Sent: Wednesday, March 09, 2011 10:39 AM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] filter IRP_MN_QUERY_DEVICE_RELATIONS for root

Thanks Doron!

So is there any other way to see when PDOs get created (or after they get created) for root enumerated devices or something along those lines other than bus filtering root ?

Thanks,
Alex.

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Wednesday, March 09, 2011 10:22 AM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] filter IRP_MN_QUERY_DEVICE_RELATIONS for root

You can’t bus filter the root bus.

d

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Alex Carp
Sent: Wednesday, March 09, 2011 10:19 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] filter IRP_MN_QUERY_DEVICE_RELATIONS for root

Hello experts,

I’ve started playing with the toaster sample in the WDK (the WDM version if it makes any difference) and the first thing I did was to change the filter sample to be a bus upper filter for the System class ({4D36E97D-E325-11CE-BFC1-08002BE10318}), and added a bit of code to post IRP_MN_QUERY_DEVICE_RELATIONS to query the device id (IRP_MN_QUERY_ID with BusQueryHardwareIDs) and print in the debugger it for each PDO returned by IRP_MN_QUERY_DEVICE_RELATIONS. This way I expect to get a nice list of all the devices in my machine as it boots.

Now, I’d like to be able to do the same for root enumerated devices (because it looks like I’m missing those), but I’m not sure how to approach the issue. I can see how the root bus wouldn’t actually need to be queried by PNP to figure out its devices list, since it is in a way a virtual bus implemented by PNP itself (which would mean I can’t use the same approach because there might not be any IRP_MJ_PNP sent by pnp to the root bus FDO). On the other hand, I hope that for the sake of a clean architecture it is actually enumerated like any other bus, which would allow me to filter it using the same approach.

Based on my investigations, there seems to be an anonymous device created by the PNP manager that serves as the root bus PDO (or at least I think that’s the case), so I keep thinking the approach I already have might work if I find the right way to attach to that bus.

Does all this make sense at all or did I get it all wrong?

How does one filter the root bus ?

Thanks,
Alex.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer