Знаю, что есть способ перечислить все указатели на DEVICE_OBJECT'ы в юзермоде. Не помню как. То ли через ZwQueryDirectoryObject, то ли через SetupAPI. В принципе, меня устраивает вариант перебрать девайс обжекты и из ядра. Можно получить имена драйверов, просмотром директории \\Driver вызвав ZwQueryDirectoryObject, затем ObReferenceObjectByName (или OpenObject ObReferenceObjectByHandle).
Перечислить \Device, глянуть низ стека,еслион безымянный, то пдо. Кстати а флажок DO_BUS_ENUMERATED_DEVICE не оно? Пдо вроде драйвера шины создают