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"); -}