摘要:
另一方面,设备驱动也是内核中最需要加以动态扩充的部分。这是因为在编译生成系统内核时常常无法确切地知道使用中究竟需要哪一些设备。显然,最好的办法是将各种设备驱动的堆叠做成可以动态安装的程序模块,就像在用户空间可以动态加载DLL一样。Windows正是这么做的,文件扩展名为.sys的模块就是此类可动态装载的内核模块。注意“模块”这个词在不同的语境下有不同的意义。当我们谈论内核管理层中的I/O管理模块时,是指逻辑上相对自成一体的一个部分,也许称之为“板块”更贴切一些。而在谈论.sys模块的时候,则是说一块可动态装载的可执行映像。这种可动态装载的可执行映像可大可小,事实上 win32k.sys就是这样一个模块。当然,其他模块就没有这么大了。在实践中,一般都根据具体的需要把一种特定设备的驱动程序堆叠实现成一个.sys 模块;或者把一个堆叠中的一层或几层实现成一个.sys模块,实际使用时则由一个或数个.sys模块提供该种设备的驱动程序堆叠。 阅读全文