Программирование драйверов Windows

       

Процедура выгрузки Unload


Диспетчер ввода/вывода выполняет вызов драйверной процедуры Unload в случае, если драйвер выгружается динамически, то есть не в связи с откатом (завершением работы) операционной системы. Эта процедура должна выполнить действия, обратные работе DriverEntry, так чтобы не осталось "числящихся" за драйвером системных ресурсов. Эти действия включают удаление системного имени устройства и символьной ссылки, которые были предоставлены во время инициализации, объекта прерывания, если он был задействован, занятых областей памяти &#8212 поскольку за их удаление никто, кроме самого драйвера, в режиме ядра не отвечает. В драйверах WDM удаление ресурсов устройств (включая имена) выполняется при удалении каждого устройства (если драйвер обслуживает несколько устройств) в процессе выполнения RemoveDevice.

Возможно, legacy драйверам имеет смысл в пределах данной процедуры побеспокоиться о судьбе IRP пакетов, обработка которых не была завершена, и DPC объектов, которые еще находятся в системной DPC очереди.



Содержание раздела