diff --git a/CMakeLists.txt b/CMakeLists.txt index 503059f..c69520a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,11 +16,15 @@ add_executable(blog log.c) add_executable(blogtest logtest.c) if (CMAKE_SIZEOF_VOID_P EQUAL 4) + add_library(kernel32 SHARED kernel32.c) + target_link_libraries(kernel32 -nostdlib) + set_target_properties(kernel32 PROPERTIES PREFIX "") + add_library(user32 SHARED user32.c) target_link_libraries(user32 -static-libgcc) set_target_properties(user32 PROPERTIES PREFIX "") - add_library(kernel32 SHARED kernel32.c) - target_link_libraries(kernel32 -nostdlib) - set_target_properties(kernel32 PROPERTIES PREFIX "") + add_library(shell32 SHARED shell32.c) + target_link_libraries(shell32 -static-libgcc) + set_target_properties(shell32 PROPERTIES PREFIX "") endif () diff --git a/common.h b/common.h index 27bbf89..4162e9a 100644 --- a/common.h +++ b/common.h @@ -2,7 +2,6 @@ #define BCOMPAT_COMMON_H #define WIN32_LEAN_AND_MEAN -#define NOUSER #include #include #include diff --git a/config.c b/config.c index a50bf07..4da11e4 100644 --- a/config.c +++ b/config.c @@ -24,7 +24,8 @@ ReportedVersion reportedVersions[] = { { "Windows NT 3.50", 3, 50, 807, VER_PLATFORM_WIN32_NT }, { "Windows NT 3.51", 3, 51, 1057, VER_PLATFORM_WIN32_NT }, { "Windows 95", 4, 0, 950, VER_PLATFORM_WIN32_WINDOWS }, - { "Windows NT 4.0", 4, 0, 1381, VER_PLATFORM_WIN32_NT } + { "Windows NT 4.0", 4, 0, 1381, VER_PLATFORM_WIN32_NT }, + { "Windows 2000", 5, 0, 2195, VER_PLATFORM_WIN32_NT } }; LPCSTR csdVersions[] = { "None", diff --git a/kernel32.c b/kernel32.c index 1158524..4c37dd7 100644 --- a/kernel32.c +++ b/kernel32.c @@ -1,4 +1,5 @@ #define DLL_NAME "kernel32.dll" +#define NOUSER #include "common.h" #include "kernel32.h" #include @@ -10,7 +11,7 @@ typedef LONG (WINAPI *RegQueryValueExWPtr)(HKEY hKey, LPCWSTR lpValueName, LPDWO typedef LONG (WINAPI *RegCloseKeyPtr)(HKEY hKey); DLL_EXPORT WINAPI BOOL GetVersionExW(LPOSVERSIONINFOW version) { - logDebug("GetVersionEx: Wrapping Call") + //logDebug("GetVersionEx: Wrapping Call") if (version->dwOSVersionInfoSize == sizeof(OSVERSIONINFOW)) { version->dwMajorVersion = 4; version->dwMinorVersion = 0; @@ -88,3 +89,52 @@ DLL_EXPORT WINAPI DWORD GetVersion() { return -1; } } + +DLL_EXPORT WINAPI HANDLE CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID) { + /*if (dwFlags == TH32CS_SNAPPROCESS) { + logDebug("GetVersionEx: Called with TH32CS_SNAPPROCESS"); + } else { + if (dwFlags & TH32CS_INHERIT) { + logError("CreateToolhelp32Snapshot: Unsupported flag TH32CS_INHERIT"); + } + if (dwFlags & TH32CS_SNAPHEAPLIST) { + logError("CreateToolhelp32Snapshot: Unsupported flag TH32CS_SNAPHEAPLIST"); + } + if (dwFlags & TH32CS_SNAPMODULE) { + logError("CreateToolhelp32Snapshot: Unsupported flag TH32CS_SNAPMODULE"); + } + if (dwFlags & TH32CS_SNAPMODULE32 ) { + logError("CreateToolhelp32Snapshot: Unsupported flag TH32CS_SNAPMODULE32"); + } + if (dwFlags & TH32CS_SNAPTHREAD) { + logError("CreateToolhelp32Snapshot: Unsupported flag TH32CS_SNAPTHREAD"); + }*/ + logError("CreateToolhelp32Snapshot: Unimplemented") + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return INVALID_HANDLE_VALUE; + //} +} + +DLL_EXPORT WINAPI BOOL Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe) { + logError("Process32First: Unimplemented") + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +DLL_EXPORT WINAPI BOOL Process32Next(HANDLE hSnapshot, LPPROCESSENTRY32 lppe) { + logError("Process32Next: Unimplemented") + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +DLL_EXPORT WINAPI BOOL Process32FirstW(HANDLE hSnapshot, LPPROCESSENTRY32W lppe) { + logError("Process32FirstW: Unimplemented") + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +DLL_EXPORT WINAPI BOOL Process32NextW(HANDLE hSnapshot, LPPROCESSENTRY32W lppe) { + logError("Process32NextW: Unimplemented") + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} diff --git a/shell32.c b/shell32.c new file mode 100644 index 0000000..09be471 --- /dev/null +++ b/shell32.c @@ -0,0 +1,7 @@ +#include "common.h" +//#include "shell32.h" + +void unused() { + logDebug("MonitorFromWindow: Called"); +} + diff --git a/shell32.h b/shell32.h new file mode 100644 index 0000000..5e67b1d --- /dev/null +++ b/shell32.h @@ -0,0 +1,359 @@ +#ifndef BCOMPAT_SHELL32_H +#define BCOMPAT_SHELL32_H + +#define FORWARDED_EXPORT(exp_name) asm (".section .drectve\n\t.ascii \" -export:" #exp_name "=_shell32." #exp_name "\""); +#define FORWARDED_ORDINAL(ordinal) asm (".section .drectve\n\t.ascii \" -export:" #ordinal "=_shell32@" #ordinal "\""); + +FORWARDED_ORDINAL(2) +FORWARDED_EXPORT(CheckEscapesA) +FORWARDED_ORDINAL(4) +FORWARDED_ORDINAL(5) +FORWARDED_EXPORT(CheckEscapesW) +FORWARDED_EXPORT(CommandLineToArgvW) +FORWARDED_EXPORT(Control_FillCache_RunDLL) +FORWARDED_ORDINAL(9) +FORWARDED_ORDINAL(10) +FORWARDED_ORDINAL(11) +FORWARDED_EXPORT(Control_FillCache_RunDLLA) +FORWARDED_ORDINAL(13) +FORWARDED_EXPORT(Control_FillCache_RunDLLW) +FORWARDED_ORDINAL(15) +FORWARDED_ORDINAL(16) +FORWARDED_ORDINAL(17) +FORWARDED_ORDINAL(18) +FORWARDED_ORDINAL(19) +FORWARDED_ORDINAL(20) +FORWARDED_ORDINAL(21) +FORWARDED_EXPORT(Control_RunDLL) +FORWARDED_ORDINAL(23) +FORWARDED_ORDINAL(24) +FORWARDED_ORDINAL(25) +FORWARDED_ORDINAL(26) +FORWARDED_ORDINAL(27) +FORWARDED_ORDINAL(28) +FORWARDED_ORDINAL(29) +FORWARDED_ORDINAL(30) +FORWARDED_ORDINAL(31) +FORWARDED_ORDINAL(32) +FORWARDED_ORDINAL(33) +FORWARDED_ORDINAL(34) +FORWARDED_ORDINAL(35) +FORWARDED_ORDINAL(36) +FORWARDED_ORDINAL(37) +FORWARDED_ORDINAL(38) +FORWARDED_ORDINAL(39) +FORWARDED_ORDINAL(40) +FORWARDED_EXPORT(Control_RunDLLA) +FORWARDED_EXPORT(Control_RunDLLW) +FORWARDED_ORDINAL(43) +FORWARDED_EXPORT(DllGetClassObject) +FORWARDED_ORDINAL(45) +FORWARDED_ORDINAL(46) +FORWARDED_ORDINAL(47) +FORWARDED_ORDINAL(48) +FORWARDED_ORDINAL(49) +FORWARDED_ORDINAL(50) +FORWARDED_ORDINAL(51) +FORWARDED_ORDINAL(52) +FORWARDED_EXPORT(DoEnvironmentSubstA) +FORWARDED_EXPORT(DoEnvironmentSubstW) +FORWARDED_ORDINAL(55) +FORWARDED_ORDINAL(56) +FORWARDED_ORDINAL(57) +FORWARDED_ORDINAL(58) +FORWARDED_ORDINAL(59) +FORWARDED_ORDINAL(60) +FORWARDED_ORDINAL(61) +FORWARDED_ORDINAL(62) +FORWARDED_ORDINAL(63) +FORWARDED_ORDINAL(64) +FORWARDED_ORDINAL(65) +FORWARDED_ORDINAL(66) +FORWARDED_ORDINAL(67) +FORWARDED_ORDINAL(68) +FORWARDED_ORDINAL(69) +FORWARDED_ORDINAL(70) +FORWARDED_ORDINAL(71) +FORWARDED_ORDINAL(72) +FORWARDED_ORDINAL(73) +FORWARDED_ORDINAL(74) +FORWARDED_ORDINAL(75) +FORWARDED_ORDINAL(76) +FORWARDED_ORDINAL(77) +FORWARDED_ORDINAL(78) +FORWARDED_ORDINAL(79) +FORWARDED_EXPORT(DragAcceptFiles) +FORWARDED_EXPORT(DragFinish) +FORWARDED_EXPORT(DragQueryFile) +FORWARDED_ORDINAL(83) +FORWARDED_ORDINAL(84) +FORWARDED_ORDINAL(85) +FORWARDED_ORDINAL(86) +FORWARDED_ORDINAL(87) +FORWARDED_ORDINAL(88) +FORWARDED_ORDINAL(89) +FORWARDED_ORDINAL(90) +FORWARDED_ORDINAL(91) +FORWARDED_ORDINAL(92) +FORWARDED_ORDINAL(93) +FORWARDED_ORDINAL(94) +FORWARDED_ORDINAL(95) +FORWARDED_ORDINAL(96) +FORWARDED_ORDINAL(97) +FORWARDED_ORDINAL(98) +FORWARDED_ORDINAL(99) +FORWARDED_ORDINAL(100) +FORWARDED_EXPORT(DragQueryFileA) +FORWARDED_ORDINAL(102) +FORWARDED_ORDINAL(103) +FORWARDED_ORDINAL(104) +FORWARDED_ORDINAL(105) +FORWARDED_ORDINAL(106) +FORWARDED_ORDINAL(107) +FORWARDED_ORDINAL(108) +FORWARDED_ORDINAL(109) +FORWARDED_ORDINAL(110) +FORWARDED_ORDINAL(111) +FORWARDED_ORDINAL(112) +FORWARDED_ORDINAL(113) +FORWARDED_ORDINAL(114) +FORWARDED_ORDINAL(115) +FORWARDED_ORDINAL(116) +FORWARDED_ORDINAL(117) +FORWARDED_ORDINAL(118) +FORWARDED_ORDINAL(119) +FORWARDED_ORDINAL(120) +FORWARDED_ORDINAL(121) +FORWARDED_ORDINAL(122) +FORWARDED_ORDINAL(123) +FORWARDED_ORDINAL(124) +FORWARDED_ORDINAL(125) +FORWARDED_ORDINAL(126) +FORWARDED_ORDINAL(127) +FORWARDED_ORDINAL(128) +FORWARDED_ORDINAL(129) +FORWARDED_ORDINAL(130) +FORWARDED_ORDINAL(131) +FORWARDED_ORDINAL(132) +FORWARDED_EXPORT(DragQueryFileAorW) +FORWARDED_ORDINAL(134) +FORWARDED_EXPORT(DragQueryFileW) +FORWARDED_ORDINAL(136) +FORWARDED_ORDINAL(137) +FORWARDED_EXPORT(DragQueryPoint) +FORWARDED_ORDINAL(139) +FORWARDED_ORDINAL(140) +FORWARDED_ORDINAL(141) +FORWARDED_ORDINAL(142) +FORWARDED_ORDINAL(143) +FORWARDED_ORDINAL(144) +FORWARDED_ORDINAL(145) +FORWARDED_ORDINAL(146) +FORWARDED_ORDINAL(147) +FORWARDED_EXPORT(DuplicateIcon) +FORWARDED_ORDINAL(149) +FORWARDED_EXPORT(ExtractAssociatedIconA) +FORWARDED_ORDINAL(151) +FORWARDED_ORDINAL(152) +FORWARDED_ORDINAL(153) +FORWARDED_ORDINAL(154) +FORWARDED_ORDINAL(155) +FORWARDED_ORDINAL(156) +FORWARDED_ORDINAL(157) +FORWARDED_ORDINAL(158) +FORWARDED_ORDINAL(159) +FORWARDED_ORDINAL(160) +FORWARDED_ORDINAL(161) +FORWARDED_ORDINAL(162) +FORWARDED_ORDINAL(163) +FORWARDED_ORDINAL(164) +FORWARDED_ORDINAL(165) +FORWARDED_ORDINAL(166) +FORWARDED_ORDINAL(167) +FORWARDED_ORDINAL(168) +FORWARDED_ORDINAL(169) +FORWARDED_ORDINAL(170) +FORWARDED_ORDINAL(171) +FORWARDED_ORDINAL(172) +FORWARDED_ORDINAL(173) +FORWARDED_ORDINAL(174) +FORWARDED_ORDINAL(175) +FORWARDED_ORDINAL(176) +FORWARDED_ORDINAL(177) +FORWARDED_ORDINAL(178) +FORWARDED_ORDINAL(179) +FORWARDED_ORDINAL(180) +FORWARDED_ORDINAL(181) +FORWARDED_ORDINAL(182) +FORWARDED_ORDINAL(183) +FORWARDED_ORDINAL(184) +FORWARDED_ORDINAL(185) +FORWARDED_EXPORT(ExtractAssociatedIconExA) +FORWARDED_EXPORT(ExtractAssociatedIconExW) +FORWARDED_EXPORT(ExtractAssociatedIconW) +FORWARDED_EXPORT(ExtractIconA) +FORWARDED_EXPORT(ExtractIconEx) +FORWARDED_EXPORT(ExtractIconExA) +FORWARDED_EXPORT(ExtractIconExW) +FORWARDED_EXPORT(ExtractIconResInfoA) +FORWARDED_EXPORT(ExtractIconResInfoW) +FORWARDED_ORDINAL(195) +FORWARDED_ORDINAL(196) +FORWARDED_ORDINAL(197) +FORWARDED_ORDINAL(198) +FORWARDED_ORDINAL(199) +FORWARDED_ORDINAL(200) +FORWARDED_ORDINAL(201) +FORWARDED_ORDINAL(202) +FORWARDED_ORDINAL(203) +FORWARDED_ORDINAL(204) +FORWARDED_ORDINAL(205) +FORWARDED_ORDINAL(206) +FORWARDED_ORDINAL(207) +FORWARDED_ORDINAL(208) +FORWARDED_ORDINAL(209) +FORWARDED_ORDINAL(210) +FORWARDED_ORDINAL(211) +FORWARDED_ORDINAL(212) +FORWARDED_ORDINAL(213) +FORWARDED_ORDINAL(214) +FORWARDED_ORDINAL(215) +FORWARDED_EXPORT(ExtractIconW) +FORWARDED_EXPORT(ExtractVersionResource16W) +FORWARDED_EXPORT(FindExeDlgProc) +FORWARDED_EXPORT(FindExecutableA) +FORWARDED_EXPORT(FindExecutableW) +FORWARDED_EXPORT(FreeIconList) +FORWARDED_EXPORT(InternalExtractIconListA) +FORWARDED_EXPORT(InternalExtractIconListW) +FORWARDED_EXPORT(OpenAs_RunDLL) +FORWARDED_EXPORT(OpenAs_RunDLLA) +FORWARDED_EXPORT(OpenAs_RunDLLW) +FORWARDED_EXPORT(PrintersGetCommand_RunDLL) +FORWARDED_EXPORT(PrintersGetCommand_RunDLLA) +FORWARDED_EXPORT(PrintersGetCommand_RunDLLW) +FORWARDED_EXPORT(RealShellExecuteA) +FORWARDED_EXPORT(RealShellExecuteExA) +FORWARDED_EXPORT(RealShellExecuteExW) +FORWARDED_EXPORT(RealShellExecuteW) +FORWARDED_EXPORT(RegenerateUserEnvironment) +FORWARDED_EXPORT(SHAddToRecentDocs) +FORWARDED_EXPORT(SHAppBarMessage) +FORWARDED_EXPORT(SHBrowseForFolder) +FORWARDED_EXPORT(SHBrowseForFolderA) +FORWARDED_EXPORT(SHBrowseForFolderW) +FORWARDED_EXPORT(SHChangeNotify) +FORWARDED_EXPORT(SHFileOperation) +FORWARDED_EXPORT(SHFileOperationA) +FORWARDED_EXPORT(SHFileOperationW) +FORWARDED_EXPORT(SHFormatDrive) +FORWARDED_EXPORT(SHFreeNameMappings) +FORWARDED_EXPORT(SHGetDataFromIDListA) +FORWARDED_EXPORT(SHGetDataFromIDListW) +FORWARDED_EXPORT(SHGetDesktopFolder) +FORWARDED_ORDINAL(249) +FORWARDED_ORDINAL(250) +FORWARDED_ORDINAL(251) +FORWARDED_EXPORT(SHGetFileInfo) +FORWARDED_EXPORT(SHGetFileInfoA) +FORWARDED_EXPORT(SHGetFileInfoW) +FORWARDED_EXPORT(SHGetInstanceExplorer) +FORWARDED_EXPORT(SHGetMalloc) +FORWARDED_EXPORT(SHGetNewLinkInfo) +FORWARDED_EXPORT(SHGetPathFromIDList) +FORWARDED_EXPORT(SHGetPathFromIDListA) +FORWARDED_EXPORT(SHGetPathFromIDListW) +FORWARDED_EXPORT(SHGetSpecialFolderLocation) +FORWARDED_EXPORT(SHHelpShortcuts_RunDLL) +FORWARDED_EXPORT(SHHelpShortcuts_RunDLLA) +FORWARDED_EXPORT(SHHelpShortcuts_RunDLLW) +FORWARDED_EXPORT(SHLoadInProc) +FORWARDED_EXPORT(SHUpdateRecycleBinIcon) +FORWARDED_EXPORT(SheChangeDirA) +FORWARDED_EXPORT(SheChangeDirExA) +FORWARDED_EXPORT(SheChangeDirExW) +FORWARDED_EXPORT(SheChangeDirW) +FORWARDED_EXPORT(SheConvertPathW) +FORWARDED_EXPORT(SheFullPathA) +FORWARDED_EXPORT(SheFullPathW) +FORWARDED_EXPORT(SheGetCurDrive) +FORWARDED_EXPORT(SheGetDirA) +FORWARDED_EXPORT(SheGetDirExW) +FORWARDED_EXPORT(SheGetDirW) +FORWARDED_EXPORT(SheGetPathOffsetW) +FORWARDED_EXPORT(SheRemoveQuotesA) +FORWARDED_EXPORT(SheRemoveQuotesW) +FORWARDED_EXPORT(SheSetCurDrive) +FORWARDED_EXPORT(SheShortenPathA) +FORWARDED_EXPORT(SheShortenPathW) +FORWARDED_EXPORT(ShellAboutA) +FORWARDED_EXPORT(ShellAboutW) +FORWARDED_EXPORT(ShellExecuteA) +FORWARDED_EXPORT(ShellExecuteEx) +FORWARDED_EXPORT(ShellExecuteExA) +FORWARDED_EXPORT(ShellExecuteExW) +FORWARDED_EXPORT(ShellExecuteW) +FORWARDED_EXPORT(ShellHookProc) +FORWARDED_EXPORT(Shell_NotifyIcon) +FORWARDED_EXPORT(Shell_NotifyIconA) +FORWARDED_EXPORT(Shell_NotifyIconW) +FORWARDED_EXPORT(StrChrA) +FORWARDED_EXPORT(StrChrIA) +FORWARDED_EXPORT(StrChrIW) +FORWARDED_EXPORT(StrChrW) +FORWARDED_EXPORT(StrCmpNA) +FORWARDED_EXPORT(StrCmpNIA) +FORWARDED_EXPORT(StrCmpNIW) +FORWARDED_EXPORT(StrCmpNW) +FORWARDED_EXPORT(StrCpyNA) +FORWARDED_EXPORT(StrCpyNW) +FORWARDED_EXPORT(StrNCmpA) +FORWARDED_EXPORT(StrNCmpIA) +FORWARDED_EXPORT(StrNCmpIW) +FORWARDED_EXPORT(StrNCmpW) +FORWARDED_EXPORT(StrNCpyA) +FORWARDED_EXPORT(StrNCpyW) +FORWARDED_EXPORT(StrRChrA) +FORWARDED_EXPORT(StrRChrIA) +FORWARDED_EXPORT(StrRChrIW) +FORWARDED_EXPORT(StrRChrW) +FORWARDED_EXPORT(StrRStrA) +FORWARDED_EXPORT(StrRStrIA) +FORWARDED_EXPORT(StrRStrIW) +FORWARDED_EXPORT(StrRStrW) +FORWARDED_EXPORT(StrStrA) +FORWARDED_EXPORT(StrStrIA) +FORWARDED_EXPORT(StrStrIW) +FORWARDED_EXPORT(StrStrW) +FORWARDED_EXPORT(WOWShellExecute) +FORWARDED_ORDINAL(505) +FORWARDED_ORDINAL(506) +FORWARDED_ORDINAL(507) +FORWARDED_ORDINAL(508) +FORWARDED_ORDINAL(509) +FORWARDED_ORDINAL(510) +FORWARDED_ORDINAL(511) +FORWARDED_ORDINAL(512) +FORWARDED_ORDINAL(520) +FORWARDED_ORDINAL(521) +FORWARDED_ORDINAL(522) +FORWARDED_ORDINAL(523) +FORWARDED_ORDINAL(524) +FORWARDED_ORDINAL(525) +FORWARDED_ORDINAL(640) +FORWARDED_ORDINAL(641) +FORWARDED_ORDINAL(643) +FORWARDED_ORDINAL(644) +FORWARDED_ORDINAL(645) +FORWARDED_ORDINAL(646) +FORWARDED_ORDINAL(647) +FORWARDED_ORDINAL(648) +FORWARDED_ORDINAL(650) +FORWARDED_ORDINAL(651) +FORWARDED_ORDINAL(652) +FORWARDED_ORDINAL(653) +FORWARDED_ORDINAL(660) +FORWARDED_ORDINAL(680) +FORWARDED_ORDINAL(1217) + +#endif //BCOMPAT_SHELL32_H \ No newline at end of file diff --git a/user32.c b/user32.c index a51127c..6db9bbe 100644 --- a/user32.c +++ b/user32.c @@ -22,4 +22,36 @@ DLL_EXPORT WINAPI int MessageBoxW(HWND hwnd, LPCWSTR lpText, LPCWSTR lpCaption, int result = proc(hwnd, buffer, lpCaption, uType); free(buffer); return result; -} \ No newline at end of file +} + +DLL_EXPORT WINAPI HMONITOR MonitorFromWindow(HWND hwnd, DWORD dwFlags) { + logDebug("MonitorFromWindow: Called"); + return (HMONITOR) 1; +} + +DLL_EXPORT WINAPI BOOL GetMonitorInfoA(HMONITOR hMonitor, LPMONITORINFO lpmi) { + logDebug("GetMonitorInfo: Called"); + if (hMonitor != (HMONITOR) 1) { + logWarn("GetMonitorInfoA: Called with invalid hMonitor"); + return FALSE; + } + if (lpmi->cbSize != sizeof(MONITORINFO)) { + logWarn("GetMonitorInfoA: Called with invalid lpmi->cbSize"); + return FALSE; + } + lpmi->rcMonitor.left = 0; + lpmi->rcMonitor.top = 0; + lpmi->rcMonitor.right = GetSystemMetrics(SM_CXSCREEN); + lpmi->rcMonitor.bottom = GetSystemMetrics(SM_CYSCREEN); + RECT workArea = { 0 }; + if (!SystemParametersInfo(SPI_GETWORKAREA, 0, &workArea, 0)) { + logError("GetMonitorInfoA: GetSystemParametersInfo failed"); + } + lpmi->rcWork = workArea; + lpmi->dwFlags = MONITORINFOF_PRIMARY; + return TRUE; +} + +DLL_EXPORT WINAPI BOOL GetMonitorInfoW(HMONITOR hMonitor, LPMONITORINFO lpmi) { + return GetMonitorInfoA(hMonitor, lpmi); +}