Это типа очередь драйверов (т.е. стек), которая что-либо обрабытывает правильно?
Каждый драйвер в системе создает DEVICE_OBJECT( DevObj), эти DevObj образуют односвязную цепочку(или список но не очередь!) посредством указателя AttachedDevice в DevObj, каждый нижний DevObj имеет указатель на верхний, но не наоборот. Подобная цепочка называется стеком драйверов и образует узел устройства(device node). В device node входит PDO(Physical Device Object), созданный и управляемый драйвером шины(или драйвером перечисляющим устройства- по сути это драйвера шин), верхние и нижние фильтры и FDO(Functional Device Object), созданный драйвером непосредственно управляющим устройством. Причем FDO сам может создать новые PDO и таким образом выступить в роли драйвера шины и породить новые стеки.
Как пример- диски.
Сначала создается PDO диска драйвером IDE контроллера(atapi.sys), над этим PDO садится FDO диска(создается disk.sys), а между ними фильтр, созданный ACPI.sys, далее Disk.sys перечисляет все разделы на диске и создает для них PDO, над которыми садится FDO созданные ftdisk.sys. То есть выходит два стека. На самом деле DevObj от ftdisk напрямую не садятся над DevObj от Disk.sys, но по сути это так и есть, так как запросы от ftdisk передаются на disk.sys, просто они не связаны указателем AttachedDevice.