Перехваты устройств, как правило, обрабатываются любым потоком, имевшим процессор, который принял прерывание, но в кольце 0 и на другом уровне защиты. Это ограничивает некоторые действия, которые может предпринять обработчик прерываний, поскольку большую часть времени текущий поток не будет связан с потоком, ожидающим события, которое указывает прерывание.
Ядро само по себе является закрытым исходным кодом и только документировано через его внутренний API. Этот API доступен авторам драйверов устройств и описан в наборах для разработки драйверов.
Некоторые ресурсы, чтобы вы начали:
Любое издание Microsoft Windows Internals Соломона и Руссиновичем. Похоже, что это четвертое издание, но даже старое издание поможет.
Windows DDK, теперь переименованный в WDK. Его документация - available online. Обязательно прочтите Kernel Mode Design Guide ...
Sysinternals содержит инструменты и статьи, чтобы исследовать поведение ядра и объяснить его. Раньше это был независимый сайт, пока Microsoft не устала от Марка Руссиновича, похоже, больше узнать о том, как работает ядро, чем они. ;-)
Обратите внимание, что исходный код для многих распространенных драйверов устройств содержится в DDK в образцах. Хотя производственные версии почти наверняка отличаются друг от друга, чтение примеров драйверов может ответить на некоторые вопросы, даже если вы не хотите сами внедрять драйвер.
На самом деле это IRQL (уровень повторного прерывания). Их 32. Код режима пользователя работает в режиме PASSIVE (0). Устройства IRQL/DIRQL выше уровня DISPATCH (2). – dragonfly
Возможно, вы помнили, что внутреннее представление системного вызова, которое доставляется драйверу устройства, называется IRP (пакет запроса ввода-вывода) ... – RBerteig
Я не должен отвечать на такие вопросы так поздно ночью.Я помню из операционной системы VMS, где они называются IPL - Уровни приоритета прерывания. Возвращение к моему техническому детству. –