https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b27429b12610063c05f95…
commit b27429b12610063c05f951db21ecdea38af50b5e
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Sat Sep 14 17:35:15 2024 +0300
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
CommitDate: Thu Oct 17 18:39:37 2024 +0300
[ADVAPI32][ETWTRACE] Add etwtrace library and link advapi32 to it on NT6+
---
dll/ntdll/CMakeLists.txt | 10 +++++++---
dll/win32/advapi32/CMakeLists.txt | 3 +++
dll/win32/advapi32/advapi32.spec | 42 +++++++++++++++++++--------------------
3 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/dll/ntdll/CMakeLists.txt b/dll/ntdll/CMakeLists.txt
index 065188705f6..fdd7c11262a 100644
--- a/dll/ntdll/CMakeLists.txt
+++ b/dll/ntdll/CMakeLists.txt
@@ -24,14 +24,18 @@ add_library(rtl_um OBJECT
target_link_libraries(rtl_um apisets ${PSEH_LIB})
add_dependencies(rtl_um psdk)
+# On NT6+ this is used by advapi32
+add_library(etwtrace etw/trace.c)
+target_link_libraries(etwtrace ${PSEH_LIB})
+add_dependencies(etwtrace psdk)
+
list(APPEND SOURCE
dbg/dbgui.c
ldr/ldrapi.c
ldr/ldrinit.c
ldr/ldrpe.c
ldr/ldrutils.c
- ldr/verifier.c
- etw/trace.c)
+ ldr/verifier.c)
if(ARCH STREQUAL "i386")
list(APPEND ASM_SOURCE dispatch/i386/dispatch.S)
@@ -61,7 +65,7 @@ set_module_type(ntdll win32dll ENTRYPOINT 0)
set_subsystem(ntdll console)
################# END HACK #################
-target_link_libraries(ntdll csrlib rtl rtl_um rtl_vista ntdllsys libcntpr uuid
${PSEH_LIB})
+target_link_libraries(ntdll etwtrace csrlib rtl rtl_um rtl_vista ntdllsys libcntpr uuid
${PSEH_LIB})
if(DLL_EXPORT_VERSION GREATER_EQUAL 0x600)
target_link_libraries(ntdll cryptlib)
endif()
diff --git a/dll/win32/advapi32/CMakeLists.txt b/dll/win32/advapi32/CMakeLists.txt
index cb2e495b1da..d1833586bb0 100644
--- a/dll/win32/advapi32/CMakeLists.txt
+++ b/dll/win32/advapi32/CMakeLists.txt
@@ -62,6 +62,9 @@ add_library(advapi32 MODULE
set_module_type(advapi32 win32dll UNICODE ENTRYPOINT DllMain 12)
target_link_libraries(advapi32 cryptlib wine ${PSEH_LIB})
+if(DLL_EXPORT_VERSION GREATER_EQUAL 0x600)
+ target_link_libraries(advapi32 etwtrace)
+endif()
add_delay_importlibs(advapi32 secur32)
add_importlibs(advapi32 advapi32_vista rpcrt4 kernel32 ntdll)
add_pch(advapi32 advapi32.h "${PCH_SKIP_SOURCE}")
diff --git a/dll/win32/advapi32/advapi32.spec b/dll/win32/advapi32/advapi32.spec
index e79390f57ba..432a4652f73 100644
--- a/dll/win32/advapi32/advapi32.spec
+++ b/dll/win32/advapi32/advapi32.spec
@@ -70,9 +70,9 @@
@ stub ComputeAccessTokenFromCodeAuthzLevel
@ stdcall ControlService(long long ptr)
@ stdcall -version=0x502 ControlTraceA(double str ptr long) ntdll.EtwControlTraceA
-@ stdcall -stub -version=0x600+ ControlTraceA(double str ptr long)
+@ stdcall -version=0x600+ ControlTraceA(double str ptr long) EtwControlTraceA
@ stdcall -version=0x502 ControlTraceW(double wstr ptr long) ntdll.EtwControlTraceW
-@ stdcall -stub -version=0x600+ ControlTraceW(double wstr ptr long)
+@ stdcall -version=0x600+ ControlTraceW(double wstr ptr long) EtwControlTraceW
@ stub ConvertAccessToSecurityDescriptorA
@ stub ConvertAccessToSecurityDescriptorW
@ stub ConvertSDToStringSDRootDomainA
@@ -207,7 +207,7 @@
@ stdcall ElfReportEventAndSourceW(long long ptr long long long ptr ptr long long ptr ptr
long ptr ptr)
@ stdcall ElfReportEventW(long long long long ptr long long ptr ptr long ptr ptr)
@ stdcall -version=0x502 EnableTrace(long long long ptr double) ntdll.EtwEnableTrace
-@ stdcall -stub -version=0x600+ EnableTrace(long long long ptr double)
+@ stdcall -version=0x600+ EnableTrace(long long long ptr double) EtwEnableTrace
@ stdcall EncryptFileA(str)
@ stdcall EncryptFileW(wstr)
@ stub EncryptedFileKeyInfo
@@ -220,7 +220,7 @@
@ stdcall EnumServicesStatusExW(long long long long ptr long ptr ptr ptr wstr)
@ stdcall EnumServicesStatusW(long long long ptr long ptr ptr ptr)
@ stdcall -version=0x502 EnumerateTraceGuids(ptr long ptr) ntdll.EtwEnumerateTraceGuids
-@ stdcall -stub -version=0x600+ EnumerateTraceGuids(ptr long ptr)
+@ stdcall -stub -version=0x600+ EnumerateTraceGuids(ptr long ptr) #
EtwEnumerateTraceGuids
@ stdcall EqualDomainSid(ptr ptr ptr)
@ stdcall EqualPrefixSid(ptr ptr)
@ stdcall EqualSid(ptr ptr)
@@ -228,9 +228,9 @@
@ stdcall FileEncryptionStatusW(wstr ptr)
@ stdcall FindFirstFreeAce(ptr ptr)
@ stdcall -version=0x502 FlushTraceA(double str ptr) ntdll.EtwFlushTraceA
-@ stdcall -stub -version=0x600+ FlushTraceA(double str ptr)
+@ stdcall -version=0x600+ FlushTraceA(double str ptr) EtwFlushTraceA
@ stdcall -version=0x502 FlushTraceW(double wstr ptr) ntdll.EtwFlushTraceW
-@ stdcall -stub -version=0x600+ FlushTraceW(double wstr ptr)
+@ stdcall -version=0x600+ FlushTraceW(double wstr ptr) EtwFlushTraceW
@ stub FreeEncryptedFileKeyInfo
@ stdcall FreeEncryptionCertificateHashList(ptr)
@ stdcall FreeInheritedFromArray(ptr long ptr)
@@ -456,9 +456,9 @@
@ stub ProcessIdleTasks
@ stdcall ProcessTrace(ptr long ptr ptr)
@ stdcall -version=0x502 QueryAllTracesA(ptr long ptr) ntdll.EtwQueryAllTracesA
-@ stdcall -stub -version=0x600+ QueryAllTracesA(ptr long ptr)
+@ stdcall -version=0x600+ QueryAllTracesA(ptr long ptr) EtwQueryAllTracesA
@ stdcall -version=0x502 QueryAllTracesW(ptr long ptr) ntdll.EtwQueryAllTracesW
-@ stdcall -stub -version=0x600+ QueryAllTracesW(ptr long ptr)
+@ stdcall -version=0x600+ QueryAllTracesW(ptr long ptr) EtwQueryAllTracesW
@ stdcall QueryRecoveryAgentsOnEncryptedFile(wstr ptr)
@ stdcall QueryServiceConfig2A(long long ptr long ptr)
@ stdcall QueryServiceConfig2W(long long ptr long ptr)
@@ -470,9 +470,9 @@
@ stdcall QueryServiceStatus(long ptr)
@ stdcall QueryServiceStatusEx(long long ptr long ptr)
@ stdcall -version=0x502 QueryTraceA(double str ptr) ntdll.EtwQueryTraceA
-@ stdcall -stub -version=0x600+ QueryTraceA(double str ptr)
+@ stdcall -version=0x600+ QueryTraceA(double str ptr) EtwQueryTraceA
@ stdcall -version=0x502 QueryTraceW(double str ptr) ntdll.EtwQueryTraceW
-@ stdcall -stub -version=0x600+ QueryTraceW(double str ptr)
+@ stdcall -version=0x600+ QueryTraceW(double str ptr) EtwQueryTraceW
@ stdcall QueryUsersOnEncryptedFile(wstr ptr)
@ stdcall ReadEncryptedFileRaw(ptr ptr ptr)
@ stdcall ReadEventLogA(long long long ptr long ptr ptr)
@@ -608,13 +608,13 @@
@ stdcall StartServiceCtrlDispatcherW(ptr)
@ stdcall StartServiceW(long long ptr)
@ stdcall -version=0x502 StartTraceA(ptr str ptr) ntdll.EtwStartTraceA
-@ stdcall -stub -version=0x600+ StartTraceA(ptr str ptr)
+@ stdcall -version=0x600+ StartTraceA(ptr str ptr) EtwStartTraceA
@ stdcall -version=0x502 StartTraceW(ptr wstr ptr) ntdll.EtwStartTraceW
-@ stdcall -stub -version=0x600+ StartTraceW(ptr wstr ptr)
+@ stdcall -version=0x600+ StartTraceW(ptr wstr ptr) EtwStartTraceW
@ stdcall -version=0x502 StopTraceA(double str ptr) ntdll.EtwStopTraceA
-@ stdcall -stub -version=0x600+ StopTraceA(double str ptr)
+@ stdcall -version=0x600+ StopTraceA(double str ptr) EtwStopTraceA
@ stdcall -version=0x502 StopTraceW(double wstr ptr) ntdll.EtwStopTraceW
-@ stdcall -stub -version=0x600+ StopTraceW(double wstr ptr)
+@ stdcall -version=0x600+ StopTraceW(double wstr ptr) EtwStopTraceW
@ stdcall SystemFunction001(ptr ptr ptr)
@ stdcall SystemFunction002(ptr ptr ptr)
@ stdcall SystemFunction003(ptr ptr)
@@ -654,7 +654,7 @@
@ stdcall SystemFunction040(ptr long long) # RtlEncryptMemory
@ stdcall SystemFunction041(ptr long long) # RtlDecryptMemory
@ stdcall -version=0x502 TraceEvent(double ptr) ntdll.EtwTraceEvent
-@ stdcall -stub -version=0x600+ TraceEvent(double ptr)
+@ stdcall -version=0x600+ TraceEvent(double ptr) EtwTraceEvent
@ stdcall TraceEventInstance(double ptr ptr ptr) ntdll.EtwTraceEventInstance
@ varargs TraceMessage() ntdll.EtwTraceMessage
@ stdcall TraceMessageVa() ntdll.EtwTraceMessageVa
@@ -667,9 +667,9 @@
@ stub UnregisterIdleTask
@ stdcall UnregisterTraceGuids(double) ntdll.EtwUnregisterTraceGuids
@ stdcall -version=0x502 UpdateTraceA(double str ptr) ntdll.EtwUpdateTraceA
-@ stdcall -stub -version=0x600+ UpdateTraceA(double str ptr)
+@ stdcall -version=0x600+ UpdateTraceA(double str ptr) EtwUpdateTraceA
@ stdcall -version=0x502 UpdateTraceW(double wstr ptr) ntdll.EtwUpdateTraceW
-@ stdcall -stub -version=0x600+ UpdateTraceW(double wstr ptr)
+@ stdcall -version=0x600+ UpdateTraceW(double wstr ptr) EtwUpdateTraceW
@ stub WdmWmiServiceMain
@ stub WmiCloseBlock
@ stub WmiCloseTraceWithCursor
@@ -688,9 +688,9 @@
@ stub WmiMofEnumerateResourcesA
@ stub WmiMofEnumerateResourcesW
@ stdcall -version=0x502 WmiNotificationRegistrationA(ptr long ptr long long)
ntdll.EtwNotificationRegistrationA
-@ stdcall -stub -version=0x600+ WmiNotificationRegistrationA(ptr long ptr long long)
+@ stdcall -stub -version=0x600+ WmiNotificationRegistrationA(ptr long ptr long long) #
EtwNotificationRegistrationA
@ stdcall -version=0x502 WmiNotificationRegistrationW(ptr long ptr long long)
ntdll.EtwNotificationRegistrationW
-@ stdcall -stub -version=0x600+ WmiNotificationRegistrationW(ptr long ptr long long)
+@ stdcall -stub -version=0x600+ WmiNotificationRegistrationW(ptr long ptr long long) #
EtwNotificationRegistrationW
@ stub WmiOpenBlock
@ stub WmiOpenTraceWithCursor
@ stub WmiParseTraceEvent
@@ -704,9 +704,9 @@
@ stub WmiQuerySingleInstanceMultipleW
@ stub WmiQuerySingleInstanceW
@ stdcall -version=0x502 WmiReceiveNotificationsA(long long long long)
ntdll.EtwReceiveNotificationsA
-@ stdcall -stub -version=0x600+ WmiReceiveNotificationsA(long long long long)
+@ stdcall -stub -version=0x600+ WmiReceiveNotificationsA(long long long long) #
EtwReceiveNotificationsA
@ stdcall -version=0x502 WmiReceiveNotificationsW(long long long long)
ntdll.EtwReceiveNotificationsW
-@ stdcall -stub -version=0x600+ WmiReceiveNotificationsW(long long long long)
+@ stdcall -stub -version=0x600+ WmiReceiveNotificationsW(long long long long) #
EtwReceiveNotificationsW
@ stub WmiSetSingleInstanceA
@ stub WmiSetSingleInstanceW
@ stub WmiSetSingleItemA