Freigeben über


Bestimmen, ob das Betriebssystem im abgesicherten Modus ausgeführt wird

In diesem Thema wird beschrieben, wie ein Gerätetreiber bestimmen kann, ob das Betriebssystem, unter dem er ausgeführt wird, im abgesicherten Modus gestartet wurde. In diesem Thema wird auch beschrieben, wie Sie verhindern, dass ein Treiber im abgesicherten Modus ausgeführt wird.

Der Kernel des Microsoft Windows-Betriebssystems exportiert einen Zeiger mit dem Namen InitSafeBootMode. InitSafeBootMode verweist auf eine ULONG-Variable, die die einstellungen des abgesicherten Modus enthält, die derzeit in Kraft sind. Ein Gerätetreiber kann diese Einstellungen untersuchen, um festzustellen, ob das Betriebssystem im abgesicherten Modus ausgeführt wird.

In der folgenden Tabelle sind die Modi für Werte der Variablen InitSafeBootMode aufgeführt.

Wert Modus

0

Das Betriebssystem befindet sich nicht im abgesicherten Modus.

1

SAFEBOOT_MINIMAL

2

SAFEBOOT_NETWORK

3*

SAFEBOOT_DSREPAIR

Hinweis * Der Wert 3 gilt nur für Windows-Domänencontroller.

Um die Variable InitSafeBootMode zu verwenden, müssen Sie sie in Ihrem Treiber deklarieren, wie im folgenden Codebeispiel gezeigt.

extern PULONG InitSafeBootMode;

Nachdem Sie InitSafeBootMode deklariert haben, können Sie anhand des folgenden Codebeispiels ermitteln, ob das Betriebssystem im abgesicherten Modus ausgeführt wird.

if (*InitSafeBootMode > 0) {
    // The operating system is in Safe Mode.
    // Take appropriate action.
    //
}

Um zu verhindern, dass ein Treiber im abgesicherten Modus arbeitet, verwenden Sie die Technik in der folgenden Liste, die Ihrem Treibertyp entspricht:

  • Funktionstreiber

    Wenn Ihr Funktionstreiber über einen Dienststarttyp SERVICE_BOOT_START verfügt, überprüfen Sie den Wert von InitSafeBootMode in der AddDevice-Routine des Funktionstreibers. Wenn sich das System im abgesicherten Modus befindet, geben Sie einen Fehler status zurück.

    Hinweis Sie dürfen niemals einen Fehler aus der DriverEntry-Routine zurückgeben.

  • Filtertreiber

    Wenn der Filtertreiber während des Systemstarts gestartet wird, überprüfen Sie den Wert von InitSafeBootMode in der AddDevice-Routine des Filtertreibers. Wenn sich das Betriebssystem im abgesicherten Modus befindet, gehen Sie wie folgt vor:

    1. Fügen Sie das Filtergeräteobjekt nicht an den Gerätestapel an.
    2. Gibt den Erfolg aus der AddDevice-Routine des Filtertreibers zurück.
  • Andere Treiber

    Überprüfen Sie für andere Treiber als Funktions- oder Filtertreiber den Wert von InitSafeBootMode in der DriverEntry-Routine des Treibers. Wenn sich das Betriebssystem im abgesicherten Modus befindet, geben Sie einen Fehler status zurück.