日期:2014-05-17 浏览次数:21238 次
?
?? 在开发驱动的时候,在有的情况下需要查看操作系统是不是运行在安全模式下。比如我们如果判断出系统正处于安全模式下,就不让驱动程序加载成功。
?
?????? 微软以及估计到了开发中有这样的需求,在 Windows 操作系统核心中导出了一个指针变量,它保存了一个声明为 ULONG 类型的数据,这个指针变量被命名成 InitSafeBootMode 。这个变量保存着现在操作系统的安全模式情况的值。在设备驱动中,可以检查这个变量的值来判断 Windows 操作系统是否处于安全模式。
InitSafeBootMode 取值情况如下:
值 | 模式 |
0 | 操作系统不是处于安全模式中 |
1 | SAFEBOOT_MINIMAL |
2 |
SAF E B O O T _ N ET W O R K |
3 |
SAF E B O O T _ DS R EP A I R |
?
注:值 3 只适用于 Windows 域控制器版本。
?
?????? 为了使用这个变量,需要先声明这个变量:
extern PULONG InitSafeBootMode;
?????? 在声明了 InitSafeBootMode 变量后,就可以按照下面的方式来使用这个变量:
?? ???? i f ( * In i t S af e B o ot M o d e > 0 )
????? {
?????? / / 操作系统现在处于安全模式中,可以采取相应的行动
?????? //
???? }
?????? 为了阻止在安全模式下对驱动进行操作,根据不同的驱动类型按照下面的列表的使用建议进行处理:
1.?????? 功能驱动
如果驱动的服务启动类型是 SER V I CE_ BOO T_ ST A