P51 在VC编译器中,默认使用C语言的调用约定。而在Windows驱动程序的编写中,需要使用标准调用约定,尤其是入口函数。
P52 默认情况下,编译器会根据源文件的扩展名,来判断使用哪种方式编译。扩展名是.cpp时,使用C++方式编译;扩展名是.c时,使用C编译器方式编译。
P53 Windows操作系统规定,在内核模式的程序是无法调用用户模式的程序的,而用户模式的程序可以调用内核模式下的程序(这需要严格的参数审查)。
P57 其实不管是build工具、nmake工具、还是VC集成开发环境,最终调用的都是cl.exe(编译器)和link.exe(链接器),所以其原理都是大体相同的。
P68 编写程序加载NT式驱动
加载步骤:(1)打开SCM管理器;(2)创建服务;(3)启动服务;(4)关闭服务;(5)关闭SCM管理器。
卸载步骤:(1)打开SCM管理器;(2)打开服务;(3)暂停服务;(4)删除服务;(5)关闭服务;(6)关闭SCM管理器。
实际上,windows DDK中提供的sample中有关于安装NT式驱动的代码。那里面的代码应该写的比较好吧。
P81 WDM式驱动程序的安装会在三个方面修改注册表,分别是硬件子键(Hardware)、类子键(Class)、服务子键(Service)。