|
Дата: Июл 7, 2004 09:40:20
да , подобным вопрос я интересовался. Кое что нашёл. Есть к примеру метод такой. Выгрузка драйвера должна происходить при IRQL_PASSIVE.делаем так , создаём объект таймер. и, со временем проверяем како то событие по нему. затем таймер может вызвать DriverUnload. Дравербудет выгружен и следом уничтожит объект таймера. Только вот есть одно но, метод этот работает не на 100%. Иногда это приводит к BSOD. Метод ещё один. если драйвер был загружен какой нить SCP, пусть он висит сервисом. Создаём общий раздел разделяемый, который будет виден и драйверу и SCP. Когда дравер посчитает, что должен быть выгружен. То с помощью условных флагов в разделяемой памяти скажет SCP , что нужно ему бы выгрузиться. BSOD при первом методе вываливался по причине того, что SCM ничего не знала о проделках дравера и соответственно система продолжала курировать объекты , созданные для дравера. естьметод аварийного завершения драйвера, тогда система более сочувстенно отнесётся к драверу.
Все эти методы не отличаются особой культурой, но , другие искать мне было лень.
поизобретай, может чего и родится....
|