Bagikan melalui


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:

    1. Jangan melampirkan objek perangkat filter ke tumpukan perangkat.
    2. 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.