Loading... ``` // 1.打开服务控制管理器 OpenSCManager(); // 2.创建驱动所对应的服务 CreateService(); // 3.开启此项服务 StartService(); //驱动程序已经加载,只需要打开 OpenService(); //卸载也需要步骤1,以及打开服务 //先停止再卸载 ControlService(); DeleteService(); ``` ## IRQL IRQL (中断请求级别) 为了解决线程 访问或者修 改位于内核的 全局变量 ``` //软件层面的最高优先级,同一时刻只会运行一个,不能访问分页内存 Dispatch_LEVEL(DPC); //比Dispatch低的一个级别,可以访问分页内存 APC_LEVEL; //最低的优先级,大多数代码所运行的级别 Passive_LEVEL ; ``` ## 其他 ``` 驱动入口:DriverEntry(PDRIVER_OBJECT,PUNICODE_STRING) 第二个参数:驱动在注册表中的驱动配置信息 // 表示当前的函数被放置在分页内存中,如果 // 短时间内不会用到,可以放置到页交换文件中 #pragma code_seg("PAGE") // 位于非分页内存 #pragma code_seg("NONE_PAGE") // 表示当前的函数放置在 INIT 区段中,其中的 // 所有内容都会在驱动初始化的时候能够使用,一 // 旦 DriverEntry 执行结束,就会被释放掉 #pragma code_seg("INIT") ``` 最后修改:2021 年 03 月 08 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏