From 5aebb400dabef5cbe5f2cd0b0ec8692a1af4bb94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 21 Nov 2022 17:34:54 +0800 Subject: [PATCH] Board: improve performance (Windows) --- CMakeLists.txt | 2 +- src/detection/board/board_windows.c | 21 +++++++++++++++++++++ src/detection/board/board_windows.cpp | 26 -------------------------- 3 files changed, 22 insertions(+), 27 deletions(-) create mode 100644 src/detection/board/board_windows.c delete mode 100644 src/detection/board/board_windows.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 30d071f29..2ae66aa0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -423,7 +423,7 @@ elseif(WIN32) src/common/processing_windows.c src/detection/battery/battery_windows.cpp src/detection/bios/bios_windows.c - src/detection/board/board_windows.cpp + src/detection/board/board_windows.c src/detection/cpu/cpu_windows.cpp src/detection/cpuUsage/cpuUsage_nowait_windows.cpp src/detection/cpuUsage/cpuUsage_windows.c diff --git a/src/detection/board/board_windows.c b/src/detection/board/board_windows.c new file mode 100644 index 000000000..b2464a8b6 --- /dev/null +++ b/src/detection/board/board_windows.c @@ -0,0 +1,21 @@ +#include "board.h" +#include "util/windows/register.h" + +void ffDetectBoard(FFBoardResult* board) +{ + ffStrbufInit(&board->error); + + ffStrbufInit(&board->boardName); + ffStrbufInit(&board->boardVendor); + ffStrbufInit(&board->boardVersion); + + FF_HKEY_AUTO_DESTROY hKey = NULL; + + if(!ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\BIOS", &hKey, &board->error)) + return; + + if(!ffRegReadStrbuf(hKey, "BaseBoardProduct", &board->boardName, &board->error)) + return; + ffRegReadStrbuf(hKey, "BaseBoardManufacturer", &board->boardVendor, NULL); + ffRegReadStrbuf(hKey, "BaseBoardVersion", &board->boardVersion, NULL); +} diff --git a/src/detection/board/board_windows.cpp b/src/detection/board/board_windows.cpp deleted file mode 100644 index e0f92bcf5..000000000 --- a/src/detection/board/board_windows.cpp +++ /dev/null @@ -1,26 +0,0 @@ -extern "C" { -#include "board.h" -} -#include "util/windows/wmi.hpp" - -extern "C" void ffDetectBoard(FFBoardResult* board) -{ - ffStrbufInit(&board->error); - - ffStrbufInit(&board->boardName); - ffStrbufInit(&board->boardVendor); - ffStrbufInit(&board->boardVersion); - - FFWmiQuery query(L"SELECT Product, Version, Manufacturer FROM Win32_BaseBoard", &board->error); - if(!query) - return; - - if(FFWmiRecord record = query.next()) - { - record.getString(L"Product", &board->boardName); - record.getString(L"Manufacturer", &board->boardVendor); - record.getString(L"Version", &board->boardVersion); - } - else - ffStrbufInitS(&board->error, "No Wmi result returned"); -}