[DRWTSN32] Add SMBIOS data to the system information (#1017)
authorStanislav Motylkov <x86corez@gmail.com>
Wed, 21 Nov 2018 20:49:15 +0000 (23:49 +0300)
committerHermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Wed, 21 Nov 2018 20:49:15 +0000 (21:49 +0100)
[DMILIB][UDMIHELP] Allow functions to be linked with C++ code.

base/applications/drwtsn32/CMakeLists.txt
base/applications/drwtsn32/sysinfo.cpp
sdk/lib/dmilib/dmilib.h
sdk/lib/udmihelp/udmihelp.h

index 66dbdab..e58b1c0 100644 (file)
@@ -2,7 +2,9 @@
 PROJECT(drwtsn32)
 
 set_cpp(WITH_RUNTIME WITH_EXCEPTIONS WITH_STL)
-include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/atl)
+include_directories(
+    ${REACTOS_SOURCE_DIR}/sdk/lib/atl
+    ${REACTOS_SOURCE_DIR}/sdk/lib/udmihelp)
 
 list(APPEND CPP_SOURCE
     drwtsn32.cpp
@@ -15,6 +17,6 @@ list(APPEND CPP_SOURCE
 add_executable(drwtsn32 ${CPP_SOURCE} drwtsn32.rc)
 add_pch(drwtsn32 precomp.h CPP_SOURCE)
 set_module_type(drwtsn32 win32gui UNICODE)
-target_link_libraries(drwtsn32 atlnew)
+target_link_libraries(drwtsn32 atlnew udmihelp)
 add_importlibs(drwtsn32 dbghelp psapi advapi32 shell32 shlwapi msvcrt user32 kernel32 ntdll)
 add_cd_file(TARGET drwtsn32 DESTINATION reactos/system32 FOR all)
index 7148163..f52c58b 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "precomp.h"
+#include <udmihelp.h>
 #include <winreg.h>
 #include <reactos/buildno.h>
 
@@ -71,6 +72,36 @@ void PrintSystemInfo(FILE* output, DumpData& data)
         xfprintf(output, "    User Name: %s" NEWLINE, Buffer);
 
 
+    PVOID SMBiosBuf;
+    PCHAR DmiStrings[ID_STRINGS_MAX] = { 0 };
+    SMBiosBuf = LoadSMBiosData(DmiStrings);
+    if (SMBiosBuf)
+    {
+        if (DmiStrings[BIOS_VENDOR])
+            xfprintf(output, "    BIOS Vendor: %s" NEWLINE, DmiStrings[BIOS_VENDOR]);
+        if (DmiStrings[BIOS_VERSION])
+            xfprintf(output, "    BIOS Version: %s" NEWLINE, DmiStrings[BIOS_VERSION]);
+        if (DmiStrings[BIOS_DATE])
+            xfprintf(output, "    BIOS Date: %s" NEWLINE, DmiStrings[BIOS_DATE]);
+        if (DmiStrings[SYS_VENDOR])
+            xfprintf(output, "    System Manufacturer: %s" NEWLINE, DmiStrings[SYS_VENDOR]);
+        if (DmiStrings[SYS_FAMILY])
+            xfprintf(output, "    System Family: %s" NEWLINE, DmiStrings[SYS_FAMILY]);
+        if (DmiStrings[SYS_PRODUCT])
+            xfprintf(output, "    System Model: %s" NEWLINE, DmiStrings[SYS_PRODUCT]);
+        if (DmiStrings[SYS_VERSION])
+            xfprintf(output, "    System Version: %s" NEWLINE, DmiStrings[SYS_VERSION]);
+        if (DmiStrings[SYS_SKU])
+            xfprintf(output, "    System SKU: %s" NEWLINE, DmiStrings[SYS_SKU]);
+        if (DmiStrings[BOARD_VENDOR])
+            xfprintf(output, "    Baseboard Manufacturer: %s" NEWLINE, DmiStrings[BOARD_VENDOR]);
+        if (DmiStrings[BOARD_NAME])
+            xfprintf(output, "    Baseboard Model: %s" NEWLINE, DmiStrings[BOARD_NAME]);
+        if (DmiStrings[BOARD_VERSION])
+            xfprintf(output, "    Baseboard Version: %s" NEWLINE, DmiStrings[BOARD_VERSION]);
+        FreeSMBiosData(SMBiosBuf);
+    }
+
     SYSTEM_INFO info;
     GetSystemInfo(&info);
     xfprintf(output, "    Number of Processors: %d" NEWLINE, info.dwNumberOfProcessors);
index 9bfcf5f..203352d 100644 (file)
@@ -6,7 +6,8 @@
  * PROGRAMMERS: Timo Kreuzer (timo.kreuzer@reactos.org)
  */
 
-#pragma once
+#ifndef DMILIB_H
+#define DMILIB_H
 
 enum _ID_STRINGS
 {
@@ -34,3 +35,5 @@ ParseSMBiosTables(
     _In_reads_bytes_(TableSize) PVOID SMBiosTables,
     _In_ ULONG TableSize,
     _Inout_updates_(ID_STRINGS_MAX) PCHAR * Strings);
+
+#endif /* DMILIB_H */
index 8ed59d9..2765222 100644 (file)
@@ -5,7 +5,14 @@
  * COPYRIGHT:   Copyright 2018 Stanislav Motylkov
  */
 
-#pragma once
+#ifndef UDMIHELP_H
+#define UDMIHELP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <../dmilib/dmilib.h>
 
 PVOID
 LoadSMBiosData(
@@ -25,3 +32,9 @@ GetSMBiosStringW(
 VOID
 FreeSMBiosData(
     _In_ PVOID Buffer);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif /* UDMIHELP_H */