summaryrefslogtreecommitdiffstats
path: root/src/detection/uptime/uptime_windows.c
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/uptime/uptime_windows.c
Add the files
Diffstat (limited to 'src/detection/uptime/uptime_windows.c')
-rw-r--r--src/detection/uptime/uptime_windows.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/detection/uptime/uptime_windows.c b/src/detection/uptime/uptime_windows.c
new file mode 100644
index 0000000..695edad
--- /dev/null
+++ b/src/detection/uptime/uptime_windows.c
@@ -0,0 +1,17 @@
+#include "uptime.h"
+#include "common/time.h"
+#include "common/windows/nt.h"
+
+const char* ffDetectUptime(FFUptimeResult* result) {
+ // QueryInterruptTime with Win7 support
+ uint64_t interruptTime = ffKSystemTimeToUInt64(&SharedUserData->InterruptTime);
+
+ result->uptime = interruptTime / 10000; // Convert from 100-nanosecond intervals to milliseconds
+ result->bootTime = ffTimeGetNow() - result->uptime;
+
+ // Alternatively, `NtQuerySystemInformation(SystemTimeOfDayInformation)` reports the boot time directly,
+ // whose result exactly equals what WMI `Win32_OperatingSystem` reports
+ // with much lower accuracy (0.5 seconds)
+
+ return NULL;
+}