Skip to content

Commit bdda5b9

Browse files
DarkFire01HBelusca
andauthored
[PSAPI][KERNEL32] Convert the PSAPI exports to a static library (reactos#7708)
This behavior is straight out of win7 where this logic was moved to KernelBase and friends. Required for thousands of apps. But also just preps for the KernelBase sync from Wine-10 Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
1 parent 6dccccc commit bdda5b9

File tree

5 files changed

+108
-64
lines changed

5 files changed

+108
-64
lines changed

dll/win32/kernel32/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ set_module_type(kernel32 win32dll ENTRYPOINT DllMain 12)
130130
set_subsystem(kernel32 console)
131131
################# END HACK #################
132132

133-
target_link_libraries(kernel32 kernel32_vista_static kernel32_shared wine chkstk ${PSEH_LIB})
133+
target_link_libraries(kernel32 psapi_static kernel32_vista_static kernel32_shared wine chkstk ${PSEH_LIB})
134134
add_importlibs(kernel32 ntdll)
135135
add_pch(kernel32 k32.h SOURCE)
136136
add_dependencies(kernel32 psdk errcodes asm)

dll/win32/kernel32/kernel32.spec

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,33 @@
760760
@ stdcall IsValidLocale(long long)
761761
@ stdcall -version=0x501-0x502 IsValidUILanguage(long)
762762
@ stdcall IsWow64Process(ptr ptr)
763+
@ stdcall -version=0x601+ K32EmptyWorkingSet(long) EmptyWorkingSet
764+
@ stdcall -version=0x601+ K32EnumDeviceDrivers(ptr long ptr) EnumDeviceDrivers
765+
@ stdcall -version=0x601+ K32EnumPageFilesA(ptr ptr) EnumPageFilesA
766+
@ stdcall -version=0x601+ K32EnumPageFilesW(ptr ptr) EnumPageFilesW
767+
@ stdcall -version=0x601+ K32EnumProcessModules(long ptr long ptr) EnumProcessModules
768+
@ stdcall -stub -version=0x601+ K32EnumProcessModulesEx(long ptr long ptr long); EnumProcessModulesEx
769+
@ stdcall -version=0x601+ K32EnumProcesses(ptr long ptr) EnumProcesses
770+
@ stdcall -version=0x601+ K32GetDeviceDriverBaseNameA(ptr ptr long) GetDeviceDriverBaseNameA
771+
@ stdcall -version=0x601+ K32GetDeviceDriverBaseNameW(ptr ptr long) GetDeviceDriverBaseNameW
772+
@ stdcall -version=0x601+ K32GetDeviceDriverFileNameA(ptr ptr long) GetDeviceDriverFileNameA
773+
@ stdcall -version=0x601+ K32GetDeviceDriverFileNameW(ptr ptr long) GetDeviceDriverFileNameW
774+
@ stdcall -version=0x601+ K32GetMappedFileNameA(long ptr ptr long) GetMappedFileNameA
775+
@ stdcall -version=0x601+ K32GetMappedFileNameW(long ptr ptr long) GetMappedFileNameW
776+
@ stdcall -version=0x601+ K32GetModuleBaseNameA(long long ptr long) GetModuleBaseNameA
777+
@ stdcall -version=0x601+ K32GetModuleBaseNameW(long long ptr long) GetModuleBaseNameW
778+
@ stdcall -version=0x601+ K32GetModuleFileNameExA(long long ptr long) GetModuleFileNameExA
779+
@ stdcall -version=0x601+ K32GetModuleFileNameExW(long long ptr long) GetModuleFileNameExW
780+
@ stdcall -version=0x601+ K32GetModuleInformation(long long ptr long) GetModuleInformation
781+
@ stdcall -version=0x601+ K32GetPerformanceInfo(ptr long) GetPerformanceInfo
782+
@ stdcall -version=0x601+ K32GetProcessImageFileNameA(long ptr long) GetProcessImageFileNameA
783+
@ stdcall -version=0x601+ K32GetProcessImageFileNameW(long ptr long) GetProcessImageFileNameW
784+
@ stdcall -version=0x601+ K32GetProcessMemoryInfo(long ptr long) GetProcessMemoryInfo
785+
@ stdcall -version=0x601+ K32GetWsChanges(long ptr long) GetWsChanges
786+
@ stdcall -stub -version=0x601+ K32GetWsChangesEx(long ptr ptr); GetWsChangesEx
787+
@ stdcall -version=0x601+ K32InitializeProcessForWsWatch(long) InitializeProcessForWsWatch
788+
@ stdcall -version=0x601+ K32QueryWorkingSet(long ptr long) QueryWorkingSet
789+
@ stdcall -version=0x601+ K32QueryWorkingSetEx(long ptr long) QueryWorkingSetEx
763790
@ stdcall -version=0x600+ LCIDToLocaleName(long wstr long long)
764791
@ stdcall LCMapStringA(long long str long ptr long)
765792
@ stdcall -version=0x600+ LCMapStringEx(long long wstr long ptr long ptr ptr long)

dll/win32/psapi/CMakeLists.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11

22
spec2def(psapi.dll psapi.spec ADD_IMPORTLIB)
33

4+
list(APPEND PSAPI_STATIC_SOURCE psapi.c)
5+
add_library(psapi_static ${PSAPI_STATIC_SOURCE})
6+
add_dependencies(psapi_static psdk)
7+
48
list(APPEND SOURCE
5-
psapi.c
9+
main.c
610
psapi.rc
711
${CMAKE_CURRENT_BINARY_DIR}/psapi.def)
812

913
add_library(psapi MODULE ${SOURCE})
1014
set_module_type(psapi win32dll ENTRYPOINT DllMain 12)
11-
target_link_libraries(psapi ${PSEH_LIB})
15+
target_link_libraries(psapi psapi_static ${PSEH_LIB})
1216
add_importlibs(psapi kernel32 ntdll)
1317
add_cd_file(TARGET psapi DESTINATION reactos/system32 FOR all)

dll/win32/psapi/main.c

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* PROJECT: ReactOS Process Status Helper Library
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: PSAPI Win2k3 style entrypoint
5+
* COPYRIGHT: Copyright 2013 Pierre Schweitzer <[email protected]>
6+
*/
7+
8+
#include <stdarg.h>
9+
10+
#define WIN32_NO_STATUS
11+
#include <windef.h>
12+
#include <winbase.h>
13+
#define NTOS_MODE_USER
14+
#include <ndk/psfuncs.h>
15+
#include <ndk/rtlfuncs.h>
16+
17+
#include <psapi.h>
18+
19+
#define NDEBUG
20+
#include <debug.h>
21+
22+
static
23+
VOID
24+
NTAPI
25+
PsParseCommandLine(VOID)
26+
{
27+
UNIMPLEMENTED;
28+
}
29+
30+
static
31+
VOID
32+
NTAPI
33+
PsInitializeAndStartProfile(VOID)
34+
{
35+
UNIMPLEMENTED;
36+
}
37+
38+
static
39+
VOID
40+
NTAPI
41+
PsStopAndAnalyzeProfile(VOID)
42+
{
43+
UNIMPLEMENTED;
44+
}
45+
46+
/*
47+
* @implemented
48+
*/
49+
BOOLEAN
50+
WINAPI
51+
DllMain(HINSTANCE hDllHandle,
52+
DWORD nReason,
53+
LPVOID Reserved)
54+
{
55+
switch(nReason)
56+
{
57+
case DLL_PROCESS_ATTACH:
58+
DisableThreadLibraryCalls(hDllHandle);
59+
if (NtCurrentPeb()->ProcessParameters->Flags & RTL_USER_PROCESS_PARAMETERS_PROFILE_USER)
60+
{
61+
PsParseCommandLine();
62+
PsInitializeAndStartProfile();
63+
}
64+
break;
65+
66+
case DLL_PROCESS_DETACH:
67+
if (NtCurrentPeb()->ProcessParameters->Flags & RTL_USER_PROCESS_PARAMETERS_PROFILE_USER)
68+
{
69+
PsStopAndAnalyzeProfile();
70+
}
71+
break;
72+
}
73+
return TRUE;
74+
}

dll/win32/psapi/psapi.c

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -244,67 +244,6 @@ CallBackConvertToAscii(LPVOID pContext,
244244
return Ret;
245245
}
246246

247-
/*
248-
* @unimplemented
249-
*/
250-
static VOID NTAPI
251-
PsParseCommandLine(VOID)
252-
{
253-
UNIMPLEMENTED;
254-
}
255-
256-
/*
257-
* @unimplemented
258-
*/
259-
static VOID NTAPI
260-
PsInitializeAndStartProfile(VOID)
261-
{
262-
UNIMPLEMENTED;
263-
}
264-
265-
/*
266-
* @unimplemented
267-
*/
268-
static VOID NTAPI
269-
PsStopAndAnalyzeProfile(VOID)
270-
{
271-
UNIMPLEMENTED;
272-
}
273-
274-
/* PUBLIC *********************************************************************/
275-
276-
/*
277-
* @implemented
278-
*/
279-
BOOLEAN
280-
WINAPI
281-
DllMain(HINSTANCE hDllHandle,
282-
DWORD nReason,
283-
LPVOID Reserved)
284-
{
285-
switch(nReason)
286-
{
287-
case DLL_PROCESS_ATTACH:
288-
DisableThreadLibraryCalls(hDllHandle);
289-
if (NtCurrentPeb()->ProcessParameters->Flags & RTL_USER_PROCESS_PARAMETERS_PROFILE_USER)
290-
{
291-
PsParseCommandLine();
292-
PsInitializeAndStartProfile();
293-
}
294-
break;
295-
296-
case DLL_PROCESS_DETACH:
297-
if (NtCurrentPeb()->ProcessParameters->Flags & RTL_USER_PROCESS_PARAMETERS_PROFILE_USER)
298-
{
299-
PsStopAndAnalyzeProfile();
300-
}
301-
break;
302-
}
303-
304-
return TRUE;
305-
}
306-
307-
308247
/*
309248
* @implemented
310249
*/

0 commit comments

Comments
 (0)