Hi,
I am writing a class filter driver to detect the coming and going of
PCI Bridges. I have written a class filter driver on System Class in
order to do this. On Vista RC2 it works great! However, on XP it
crashes (with INACCESSIBLE_BOOT_DEVICE (7b) ) unless I change the
WdfLoadGroup to be before Boot Bus Extender in
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder.
The reason it crashes is because it hasn't loaded KMDF when it tries to
load my driver. It doesn't seem to matter what group my driver belongs
to if I make it a class filter driver (on System class on Windows XP);
it always seems to try and load the driver before KMDF is loaded (only
on XP).

The suprise is in Vista. Its ServiceGroupOrder has WdfLoadGroup BEFORE
Boot Bus Extender! It also has a new group called EMS before
WdfLoadGroup. So EMS has assumed position 2, WdfLoadGroup 3, and Boot
Bus Extender has dropped two positions to spot number 4! I think that
is why the class filter driver installs just fine on Vista.

So how do I make it work for both? In another thread it was suggested
to not put WdfLoadGroup before Boot Bus Extender in XP because the OS
assumes Boot Bus Extender is in the second position. I'd rather not
revert to write a WDM filter on this one... Anyone have any
suggestions. Is changing the group that KMDF belongs to on XP out of
the question (i.e. Boot Bus Extender)?

Any help would be much appreciated.