Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как драйвер устройства может определить, была ли операционная система запущена в безопасном режиме. В этом разделе также описывается, как предотвратить работу драйвера в безопасном режиме.
Ядро операционной системы Microsoft Windows экспортирует указатель с именем InitSafeBootMode. InitSafeBootMode указывает на переменную ULONG, содержащую параметры безопасного режима, которые в настоящее время применяются. Драйвер устройства может проверить эти параметры, чтобы определить, работает ли операционная система в безопасном режиме.
В следующей таблице перечислены режимы значений переменной InitSafeBootMode .
| Ценность | Режим |
|---|---|
0 |
Операционная система не находится в безопасном режиме. |
1 |
Минимальная безопасная загрузка |
2 |
SAFEBOOT_NETWORK |
3* |
SAFEBOOT_DSREPAIR |
Примечание * Значение 3 применяется только к контроллерам домена Windows.
Чтобы использовать переменную InitSafeBootMode , необходимо объявить ее в драйвере, как показано в следующем примере кода.
extern PULONG InitSafeBootMode;
После объявления InitSafeBootMode можно использовать следующий пример кода, чтобы определить, работает ли операционная система в безопасном режиме.
if (*InitSafeBootMode > 0) {
// The operating system is in Safe Mode.
// Take appropriate action.
//
}
Чтобы предотвратить работу драйвера в безопасном режиме, используйте метод в следующем списке, который соответствует типу драйвера:
Драйверы функций
Если драйвер функции имеет тип запуска службы SERVICE_BOOT_START, проверьте значение InitSafeBootMode в подпрограмме AddDevice драйвера функции. Если система находится в безопасном режиме, верните состояние сбоя.
Примечание Вы никогда не должны возвращать код ошибки из подпрограммы DriverEntry.
драйверы фильтрации
Если драйвер фильтра запускается во время запуска системы, проверьте значение InitSafeBootMode в подпрограмме AddDevice драйвера фильтра. Если операционная система находится в безопасном режиме, сделайте следующее:
- Не присоединяйте объект устройства фильтра к стеку устройств.
- Возвращает успех из подпрограммы AddDevice драйвера фильтра.
Другие драйверы
Для драйверов, отличных от драйверов функций или фильтров, проверьте значение InitSafeBootMode в подпрограмме DriverEntry драйвера. Если операционная система находится в безопасном режиме, верните состояние сбоя.