Выполняется в ответ на получение прерывания от аппаратного устройства с высоким приоритетом. Как правило, размещает в очереди вызов отложенной обработки DPC – defraud processing call.
Процедура облуживания прерываний так же может быть вызвана асинхронно, когда генерируется APC (Asynchronous processing call). Так же выполняется привилегированно, но в контексте вызвавшего процесса: в режиме ядра или пользователя. Используется:
1. Буферизированный ввод/вывод - буфер выделяться в невыгружаемой памяти и действительном контексте любого процесса или потока
2. Прямой ввод/вывод - буфер независим от процесса и описывается для драйвера при помощи дескрипторов памяти. Адрес буфера используется в качестве системного виртуального адресного пространства
3. Небуферизированный ввод/вывод – драйверу непосредственно передается адрес буфера в контексте вызвавшего процесса.
При инициализации устройства диспетчер plug-and-play формирует дерево устройств, начинающееся с виртуального драйвера шины с имени root и отражающего взаимосвязи между устройствами.
При перечислении устройств в процессе загрузки диспетчер PnP запрашивает у драйверов шин описание устройств, найденных на этих шинах. Описание включает уникальный идентификатор устройства и его требования к аппаратным ресурсам. По этим данным формируются узлы устройств. В общем случае объект устройства может включать:
1. Высокоуровневый драйвер фильтра;
2. Функциональный драйвер;
3. Низкоуровневый драйвер;
4. Драйвер фильтра шины;
5. Драйвер шины.
Идентификаторы устройств специфичны для конкретной шины. Могут состоять из идентификатора составителя, продукта и экземпляра устройств. Общий идентификатор устройства используется для поиска раздела устройства в реестре.
Устройства драйвера PnP устройства:
Драйвер шины информирует диспетчер PnP о новом устройстве, сообщая его идентификатор. Если в реестре нет походящего функционального драйвера, сообщение передается диспетчеру PnP пользовательского режима. Он собственно пытается установить нужный драйвер (генерация диалоговых окон и так далее). API функции (особенно Setup CfgMgr) используются для поиска info файлов, совместимых с обнаруженным устройством. Когда драйвер обнаружен, устанавливаются его параметры.