Menentukan Apakah Sistem Operasi Berjalan dalam Mode Aman
Topik ini menjelaskan bagaimana driver perangkat dapat menentukan apakah sistem operasi yang dijalankannya dimulai dalam Mode Aman. Topik ini juga menjelaskan cara mencegah driver beroperasi dalam Mode Aman.
Kernel sistem operasi Microsoft Windows mengekspor pointer bernama InitSafeBootMode. InitSafeBootMode menunjuk ke variabel ULONG yang berisi pengaturan Mode Aman yang saat ini berlaku. Driver perangkat dapat memeriksa pengaturan ini untuk menentukan apakah sistem operasi berjalan dalam Mode Aman.
Tabel berikut mencantumkan mode untuk nilai variabel InitSafeBootMode .
Nilai | Mode |
---|---|
0 |
Sistem operasi tidak dalam Mode Aman. |
1 |
SAFEBOOT_MINIMAL |
2 |
SAFEBOOT_NETWORK |
3* |
SAFEBOOT_DSREPAIR |
Catatan * Nilai 3 hanya berlaku untuk pengontrol domain Windows.
Untuk menggunakan variabel InitSafeBootMode , Anda harus mendeklarasikannya di driver Anda, seperti yang ditunjukkan contoh kode berikut.
extern PULONG InitSafeBootMode;
Setelah Anda mendeklarasikan InitSafeBootMode, Anda dapat menggunakan contoh kode berikut untuk menentukan apakah sistem operasi berjalan dalam Mode Aman.
if (*InitSafeBootMode > 0) {
// The operating system is in Safe Mode.
// Take appropriate action.
//
}
Untuk mencegah driver beroperasi dalam Mode Aman, gunakan teknik dalam daftar berikut yang cocok dengan jenis driver Anda:
Driver fungsi
Jika driver fungsi Anda memiliki jenis mulai layanan SERVICE_BOOT_START, periksa nilai InitSafeBootMode dalam rutinitas AddDevice driver fungsi. Jika sistem dalam Mode Aman, kembalikan status kegagalan.
Catatan Anda tidak boleh mengembalikan kegagalan dari rutinitas DriverEntry .
Filter driver
Jika driver filter Anda dimulai selama startup sistem, periksa nilai InitSafeBootMode dalam rutinitas AddDevice driver filter. Jika sistem operasi dalam Mode Aman, lakukan hal berikut:
- Jangan melampirkan objek perangkat filter ke tumpukan perangkat.
- Mengembalikan keberhasilan dari rutinitas AddDevice driver filter.
Driver lain
Untuk driver selain driver fungsi atau filter, periksa nilai InitSafeBootMode dalam rutinitas DriverEntry driver. Jika sistem operasi dalam Mode Aman, kembalikan status kegagalan.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk