Поделиться через


Подпрограмма выгрузки драйвера, отличного от PnP

Более ранние драйверы и высокоуровневые драйверы файловой системы, которые не обрабатывают запросы на удаление устройств PnP, должны освобождать ресурсы, удалять объекты устройств и отключаться от стека устройств в подпрограммах выгрузки .

Если он еще не сделал этого, первое, что должен сделать устаревший драйвер устройства в своей подпрограмме выгрузки , это отключить прерывания с устройства. В противном случае его ISR может быть вызван для обработки прерывания устройства, когда подпрограмма выгрузки освобождает ресурсы в расширении устройства, необходимые ISR для обработки прерывания. Даже если его ISR успешно выполняется в таких случаях, подпрограмма DpcForIsr или CustomDpc , которую isr помещает в очередь, и, возможно, другие подпрограммы драйвера, которые выполняются в IRQL >= DISPATCH_LEVEL, будут выполняться до того, как подпрограмма Unload восстановит управление, тем самым увеличивая вероятность того, что подпрограмма Unload удалила ресурс, на который ссылается другая подпрограмма драйвера. Дополнительные сведения см. в статье Управление приоритетами оборудования .

После отключения прерываний файловая система и устаревшие драйверы должны освободить ресурсы и объекты. Дополнительные сведения см. в следующих двух разделах:

Освобождение ресурсов Driver-Allocated

Освобождение объектов устройства и контроллера