Привет! Собственно, есть несколько неясностей насчет того, как это устроено в винде Т.е., работает какой-то поток, тут приходит прерывание от таймера. Процессор переходит на адрес обработчика в записи IDT для таймера. Тут сразу вопрос: как сопоставляются прерывания и номера записей в IDT? Т.е., есть некоторый стандартный список прерываний, что таймер, это допустим номер 13(условно), а как моему устройству сопоставляется, к примеру номер 55? Дальше. Обработчик таймера смотрит, вышло ли время потока (наверно, в объекте потока?), если вышло, то генерирует прерывание DPC, создает объект DPC и ставит его в очередь. Дальше, IRQL процессора (кстати, как реализовано — просто какая-то глобальная переменная?) падает от TIMER_LEVEL до PASSIVE_LEVEL И тут... как процессор узнает, что было прерывание DPC? Он же отбрасывал прерывания ниже уровня TIMER_LEVEL? И что значит отбрасывал? Есть прерывание и обработчик, процессор все равно же вызывает обработчик, если у него не вызвана команда cli, только смотрит на текущий уровень IRQL? Каша... Соломона и Руссиновича читал ))