Кому достаются адреса и прерывания
Каждое устройство на шине PCI Express получает от системы свои ресурсы: диапазоны адресов памяти, через которые процессор обменивается с ним данными, порты ввода-вывода и прерывания, которыми устройство сообщает о событиях. Распределяет их прошивка платы при включении, а Windows при загрузке уточняет и дополняет. Если свободного места не хватило или два устройства получили пересекающиеся ресурсы, одно из них остаётся ни с чем, и диспетчер показывает код 12.
Раньше этот код был спутником старых плат расширения, которые спорили за прерывания. Сейчас узким местом чаще становится адресное пространство. Современная видеокарта просит у системы большой диапазон адресов под видеопамять, а при включённой технологии Resizable BAR — диапазон размером со всю видеопамять. Если прошивка платы размещает устройства только в нижних четырёх гигабайтах адресов, две-три такие карты, адаптер NVMe и встроенные контроллеры туда не помещаются. Microsoft отдельно упоминает и старую причину: BIOS не выделил прерывание контроллеру USB из-за ошибочной таблицы многопроцессорной конфигурации.
Поэтому вопрос «система или железо» получает необычный ответ: чаще всего это настройки и прошивка самого железа. Windows и драйвер лишь сообщают, что ресурсов не хватило. Плата бывает неисправна редко, но исключать это нельзя, если код появился у встроенных устройств — контроллера USB, звука, сетевой карты — на компьютере, где ничего не меняли. Там в первую очередь смотрят на сброшенные настройки BIOS и на прошивку.
