Re: IRP_MN_QUERY_DEVICE_RELATIONS concurrency

Tech-Archive recommends: Fix windows errors by optimizing your registry



serializing everything to a thread is a bit overkill. QDR/BusRelations is a
state changing irp. that means it is serialized against itself and other
state changing (start, stop, remove, surprise remove, query stop, query
remove, q.s. canceled, q.r. canceled) irps.

d

--
Please do not send e-mail directly to this alias. this alias is for
newsgroup purposes only.
This posting is provided "AS IS" with no warranties, and confers no rights.


<BubbaGump> wrote in message
news:02voo2hsrj9rg6osmhvpvbbosaa111f9c7@xxxxxxxxxx
Is it possible to receive another IRP_MN_QUERY_DEVICE_RELATIONS for
BusRelations while handling a different IRP_MN_QUERY_DEVICE_RELATIONS
for BusRelations? (say on Windows 2000)

I assumed not because I found no documentation for it. I have seen
that white paper on IRP concurrency, but it failed to mention this
one. I see "context of a system thread" mentioned in the DDK docs,
which makes me think that might be the same system thread that sends
IRP_MN_START_DEVICE, IRP_MN_STOP_DEVICE, and IRP_MN_REMOVE_DEVICE.

Maybe I should just send every PnP IRP through my own worker thread,
then I won't have to think about whether the OS serializes this PnP
IRP or that one and why it does some and not others. I can't imagine
PnP IRPs happen that often, so I can't imagine it'd be any sort of a
performance bottleneck.



.