Я новичок в разработке драйверов. У меня основной вопрос.
При написании драйверов устройств WDM можно вызвать IoBuildDeviceIoControlRequest / IoBuildSynchronousFsdRequest, чтобы выделить синхронный IRP для передачи другому целевому драйверу. Одно из основных требований - выделить объект событие перед вызовом этих функций. И мы должны убедиться, что этот объект события все еще доступен к моменту, когда целевой драйвер завершит IRP.
Можем ли мы выделить этот объект события из локальной области действия вызывающей функции IoBuildDeviceIoControlRequest / IoBuildSynchronousFsdRequest? то есть из стека ядра, а не из невыгружаемого пула. Многие примеры кодов просто выделяют объект события из локальной области видимости и, следовательно, из стека ядра. Но возникнет ли проблема, если вызывающий драйвер будет выгружен, в то время как целевой драйвер все еще обрабатывает наш IRP?