IRQ

goth

Гость города
#1
У меня винда звуклвуху и видуху посадила на одно прерывание (16), в диспетчере устройств изменить ресурсы нельзя (только если отключить на уровне ядра возможность программного отключения питания, а этого делать не хочется), в BIOS'e принудительно поставил прерывание PCI'шному слоту звуковыхи 9 IRQ и включил его мониторинг. Результатов - ноль. Подскажите что-нить, а то задолбался уже с отстойным звуком сидеть...
 

skif

Житель центра
#2
Очень распространенный глюк Win2k, WinXP. Дело в том что смертельные конфликты могли возгнкнуть в Win 9x/NT4.
Железно поможет изменение PCI слота на котором сидит звуковуха... В прямом смысле :) Пересадие ее на в соседний слот. Винда определит ее заново и присвоит новое прерывание.
Вот только этот способ мне как-то не нравиться....
Вот другой метод:
Идешь в regedit
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/PriorityControl
Создаешь новый ключ IRQxPriority типа DWORD, x - текущее прерывание видеокарты), а значением ключа устанавливаешь цифру желаемого прерывания.

Немного о том как реализуються прерывания в Win 2000/XP.
Собственно это идея Intel, просто Microsoft наконец-то смогла прилично ее реализовать.
При прерывании ОС считывала из ячейки памяти адрес перехода к программе обрабатывающей прерывание. Драйвер обрабатывающий это прерывание переписывал этоот адрес на свой собственный, при этом сохраняя прежний адрес внутри себя. Далее, при прерывании последний загруженный драйвер получал управление и анализировал - кому предназначено это прерывание, 0сли для ему, то он его обрабатывал и возвоащал управлегние прерваной программе, если не ему -передовал управление по адрессу, сохраненному им при загрузке, т.е. драйверу, который был загружен до него.
 

ExSeaMan

Житель окраин
#3
И еще хочу добавить. Судя по номеру IRQ (16), винда у тебя установлена в режиме APIC. Поэтому изменить назначенное IRQ средствами винды бесполезно (кроме ковыряния в реестре). Еще одним способом разрешить данный конфликт является установка в BIOS'е параметра "Plug&Play OS installed" (или чего-то подобного) в "NO". Винда, увидев этот параметр, обычно использует распределение устройств, которое передаёт ей BIOS'овский энумератор, который обычно справляется с разводом устройств по разным IRQ гораздо лучше, чем виндовый.