#include "assert.h"
#include "version.h"
-extern PULONG InitSafeBootMode;
-
typedef struct _XEN_DRIVER {
PLOG_DISPOSITION TraceDisposition;
PLOG_DISPOSITION InfoDisposition;
static XEN_DRIVER Driver;
+extern PULONG InitSafeBootMode;
+
+static FORCEINLINE BOOLEAN
+__DriverSafeMode(
+ VOID
+ )
+{
+ return (*InitSafeBootMode > 0) ? TRUE : FALSE;
+}
+
static FORCEINLINE VOID
__DriverSetUnplugKey(
IN HANDLE Key
Trace("====>\n");
- if (*InitSafeBootMode > 0)
- goto done;
-
status = LogInitialize();
if (!NT_SUCCESS(status))
goto fail1;
MONTH,
YEAR);
+ if (__DriverSafeMode())
+ Info("SAFE MODE\n");
+
status = RegistryInitialize(RegistryPath);
if (!NT_SUCCESS(status))
goto fail2;
RegistryCloseKey(ServiceKey);
-done:
Trace("<====\n");
return STATUS_SUCCESS;
Trace("====>\n");
- if (*InitSafeBootMode > 0)
- goto done;
-
UnplugTeardown();
ProcessTeardown();
LogTeardown();
-done:
ASSERT(IsZeroMemory(&Driver, sizeof (XEN_DRIVER)));
Trace("<====\n");
#include "util.h"
#include "version.h"
-extern PULONG InitSafeBootMode;
-
typedef struct _XENBUS_DRIVER {
PDRIVER_OBJECT DriverObject;
HANDLE ParametersKey;
Trace("====>\n");
- if (*InitSafeBootMode > 0)
- goto done;
-
ASSERT(IsListEmpty(&Driver.List));
ASSERT3U(Driver.References, ==, 1);
--Driver.References;
MONTH,
YEAR);
-done:
__DriverSetDriverObject(NULL);
ASSERT(IsZeroMemory(&Driver, sizeof (XENBUS_DRIVER)));
Driver.DriverObject->DriverUnload = DriverUnload;
- if (*InitSafeBootMode > 0)
- goto done;
-
Info("%d.%d.%d (%d) (%02d.%02d.%04d)\n",
MAJOR_VERSION,
MINOR_VERSION,
#include "util.h"
#include "version.h"
-extern PULONG InitSafeBootMode;
-
typedef struct _XENFILT_DRIVER {
PDRIVER_OBJECT DriverObject;
HANDLE ParametersKey;
__FreePoolWithTag(Buffer, XENFILT_DRIVER_TAG);
}
+extern PULONG InitSafeBootMode;
+
+static FORCEINLINE BOOLEAN
+__DriverSafeMode(
+ VOID
+ )
+{
+ return (*InitSafeBootMode > 0) ? TRUE : FALSE;
+}
+
static FORCEINLINE VOID
__DriverSetDriverObject(
IN PDRIVER_OBJECT DriverObject
if (DriverIsActivePresent()) {
Info("ACTIVE DEVICE %sPRESENT\n", (!Present) ? "NOT " : "");
- UnplugDevices();
+ if (!__DriverSafeMode())
+ UnplugDevices();
}
Info("PENDING\n");
Trace("====>\n");
- if (*InitSafeBootMode > 0)
- goto done;
-
ASSERT(IsListEmpty(&Driver.List));
ASSERT3U(Driver.References, ==, 1);
--Driver.References;
MONTH,
YEAR);
-done:
__DriverSetDriverObject(NULL);
ASSERT(IsZeroMemory(&Driver, sizeof (XENFILT_DRIVER)));
DriverObject->DriverUnload = DriverUnload;
- if (*InitSafeBootMode > 0)
- goto done;
-
Info("%d.%d.%d (%d) (%02d.%02d.%04d)\n",
MAJOR_VERSION,
MINOR_VERSION,