驱动的DriverUnload函数

对于一个Windows驱动来说,一般需要提供DriverUnload函数,有了这个函数,驱动对应的服务(service)就能被停止。

驱动是已服务的方式运行的,服务停止的实质是系统把该驱动模块对应在内核地址空间中的代码以及数据移除了。

同时,开发者可以在DriverUnload函数中进行一些清理相关的工作。例如驱动Driver A内部有一个线程B,如果开发者没有在DriverUnload函数中停止线程B,一旦驱动A被停止,则线程B对应与驱动A的代码就被系统删除了,线程B执行就会发生异常,从而引起系统异常。

但DriverUnload函数并不是必须的,因此,有些软件就不提供DriverUnload函数,服务就只能启动而不能停止,这一特性被很多软件(例如安全软件)利用,避免驱动被恶意停止。

参考:《Windows内核编程》- 谭文,陈铭霖

上一篇:Web入门——制作简单的网页(1)


下一篇:驱动篇——内核空间与内核模块