Подскажите, пожалуйста, куда копать: нужен пример WDM-драйвера, с динамической загрузкой/выгрузкой. Есть DDK98/2000/XP. Просмотрел, кажется, все. Hо не нашел :((( В DDK98 нашел динамический VXD. А WDM? Может, они все динамические, а я их выгружать не умею?
Выгрузка драйвера осуществляется процедурой DriverUnload, которую регистрирует сам драйвер в структуре DRIVER_OBJECT при выполнении DriverEntry. Ее можно и не регистрировать, но насколько я понимаю, хороший тон - все-таки зарегистрировать, и ресурсы, захваченные в DriverEntry, должны отдаваться обратно системе именно в DriverUnload. Также необходимо удалить все созданные драйвером объекты, отканселить IRP пакеты, вернуть таймеры, прерывания, DMA и проч. В этом случае получится выгружаемый WDM драйвер. UnloadDriver вызывается диспетчером автоматически при выполнении RemoveDevice, то есть при физическом удалении устройства, вроде бы можно сделать это и программно, без физического удаления устройства.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.