Start work on Toolhelp & Monitor API

This commit is contained in:
Bommels05 committed 2026-03-28 23:26:49 +01:00
1 parent 03a1a9c957
commit 527ea0a2b3
7 files changed
+459 -7

No files matched your search

+7 -3
View File
@@ -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 ()
-1
View File
@@ -2,7 +2,6 @@
#define BCOMPAT_COMMON_H
#define WIN32_LEAN_AND_MEAN
#define NOUSER
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
+2 -1
View File
@@ -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",
+51 -1
View File
@@ -1,4 +1,5 @@
#define DLL_NAME "kernel32.dll"
#define NOUSER
#include "common.h"
#include "kernel32.h"
#include <tlhelp32.h>
@@ -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;
}
+7
View File
@@ -0,0 +1,7 @@
#include "common.h"
//#include "shell32.h"
void unused() {
logDebug("MonitorFromWindow: Called");
}
+359
View File
@@ -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
+33 -1
View File
@@ -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;
}
}
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);
}