Alistair Leslie-Hughes : ntdll: Add NtTraceControl/ZwTraceControl stubs.

Alexandre Julliard julliard at winehq.org
Wed Aug 25 15:21:43 CDT 2021


Module: wine
Branch: master
Commit: 16a7976de968b668bc970be4dc3bb5506bed2a34
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=16a7976de968b668bc970be4dc3bb5506bed2a34

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Wed Aug 25 18:04:58 2021 +1000

ntdll: Add NtTraceControl/ZwTraceControl stubs.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/ntdll.spec               |  2 ++
 dlls/ntdll/unix/debug.c             | 15 +++++++++++++++
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec |  2 ++
 dlls/wow64/sync.c                   | 16 ++++++++++++++++
 dlls/wow64/syscall.h                |  1 +
 include/winternl.h                  |  3 ++-
 6 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 1bff52a299d..c3d17d989ac 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -414,6 +414,7 @@
 @ stdcall -syscall NtTerminateProcess(long long)
 @ stdcall -syscall NtTerminateThread(long long)
 @ stdcall -syscall NtTestAlert()
+@ stdcall -syscall NtTraceControl(long ptr long ptr long long)
 # @ stub NtTraceEvent
 # @ stub NtTranslateFilePath
 @ stdcall -syscall NtUnloadDriver(ptr)
@@ -1435,6 +1436,7 @@
 @ stdcall -private -syscall ZwTerminateProcess(long long) NtTerminateProcess
 @ stdcall -private -syscall ZwTerminateThread(long long) NtTerminateThread
 @ stdcall -private -syscall ZwTestAlert() NtTestAlert
+@ stdcall -private -syscall ZwTraceControl(long ptr long ptr long long) NtTraceControl
 # @ stub ZwTraceEvent
 # @ stub ZwTranslateFilePath
 @ stdcall -private -syscall ZwUnloadDriver(ptr) NtUnloadDriver
diff --git a/dlls/ntdll/unix/debug.c b/dlls/ntdll/unix/debug.c
index d43cdaeb917..a2a63b5a9f4 100644
--- a/dlls/ntdll/unix/debug.c
+++ b/dlls/ntdll/unix/debug.c
@@ -34,6 +34,8 @@
 # include <unistd.h>
 #endif
 
+#include "ntstatus.h"
+#define WIN32_NO_STATUS
 #include "windef.h"
 #include "winnt.h"
 #include "winternl.h"
@@ -42,6 +44,7 @@
 
 WINE_DECLARE_DEBUG_CHANNEL(pid);
 WINE_DECLARE_DEBUG_CHANNEL(timestamp);
+WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
 
 struct debug_info
 {
@@ -328,3 +331,15 @@ void dbg_init(void)
     options[nb_debug_options] = default_option;
     init_done = TRUE;
 }
+
+
+/***********************************************************************
+ *              NtTraceControl  (NTDLL.@)
+ */
+NTSTATUS WINAPI NtTraceControl( ULONG code, void *inbuf, ULONG inbuf_len,
+                                void *outbuf, ULONG outbuf_len, ULONG *size )
+{
+    FIXME( "code %u, inbuf %p, inbuf_len %u, outbuf %p, outbuf_len %u, size %p\n", code, inbuf, inbuf_len,
+           outbuf, outbuf_len, size );
+    return STATUS_SUCCESS;
+}
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index f51833b91a0..071dae6ceca 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -818,6 +818,7 @@
 @ stdcall NtSetSecurityObject(long long ptr)
 @ stdcall NtSetVolumeInformationFile(long ptr ptr long long)
 @ stdcall NtShutdownSystem(long)
+@ stdcall NtTraceControl(long ptr long ptr long long)
 @ stub NtTraceEvent
 @ stdcall NtUnlockFile(long ptr ptr ptr ptr)
 @ stub NtVdmControl
@@ -1514,6 +1515,7 @@
 @ stdcall -private ZwSetVolumeInformationFile(long ptr ptr long long) NtSetVolumeInformationFile
 @ stdcall -private ZwTerminateJobObject(long long) NtTerminateJobObject
 @ stdcall -private ZwTerminateProcess(long long) NtTerminateProcess
+@ stdcall -private ZwTraceControl(long ptr long ptr long long) NtTraceControl
 @ stub ZwTranslateFilePath
 @ stdcall ZwUnloadDriver(ptr)
 @ stdcall -private ZwUnloadKey(ptr) NtUnloadKey
diff --git a/dlls/wow64/sync.c b/dlls/wow64/sync.c
index 2560fc10a0a..0078508fc7f 100644
--- a/dlls/wow64/sync.c
+++ b/dlls/wow64/sync.c
@@ -1481,6 +1481,22 @@ NTSTATUS WINAPI wow64_NtTestAlert( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtTraceControl
+ */
+NTSTATUS WINAPI wow64_NtTraceControl( UINT *args )
+{
+    ULONG code = get_ulong( &args );
+    void *inbuf = get_ptr( &args );
+    ULONG inbuf_len = get_ulong( &args );
+    void *outbuf = get_ptr( &args );
+    ULONG outbuf_len = get_ulong( &args );
+    ULONG *size = get_ptr( &args );
+
+    return NtTraceControl( code, inbuf, inbuf_len, outbuf, outbuf_len, size );
+}
+
+
 /**********************************************************************
  *           wow64_NtWaitForDebugEvent
  */
diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h
index d6c1b7c74fa..a565e9cda3a 100644
--- a/dlls/wow64/syscall.h
+++ b/dlls/wow64/syscall.h
@@ -228,6 +228,7 @@
     SYSCALL_ENTRY( NtTerminateProcess ) \
     SYSCALL_ENTRY( NtTerminateThread ) \
     SYSCALL_ENTRY( NtTestAlert ) \
+    SYSCALL_ENTRY( NtTraceControl ) \
     SYSCALL_ENTRY( NtUnloadDriver ) \
     SYSCALL_ENTRY( NtUnloadKey ) \
     SYSCALL_ENTRY( NtUnlockFile ) \
diff --git a/include/winternl.h b/include/winternl.h
index 06f00740e43..bc70121ac28 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -4009,7 +4009,7 @@ NTSYSAPI NTSTATUS  WINAPI NtSetEvent(HANDLE,LONG*);
 NTSYSAPI NTSTATUS  WINAPI NtSetHighEventPair(HANDLE);
 NTSYSAPI NTSTATUS  WINAPI NtSetHighWaitLowEventPair(HANDLE);
 NTSYSAPI NTSTATUS  WINAPI NtSetHighWaitLowThread(VOID);
-NTSYSAPI NTSTATUS WINAPI  NtSetInformationDebugObject(HANDLE,DEBUGOBJECTINFOCLASS,PVOID,ULONG,ULONG*);
+NTSYSAPI NTSTATUS  WINAPI NtSetInformationDebugObject(HANDLE,DEBUGOBJECTINFOCLASS,PVOID,ULONG,ULONG*);
 NTSYSAPI NTSTATUS  WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS);
 NTSYSAPI NTSTATUS  WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG);
 NTSYSAPI NTSTATUS  WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG);
@@ -4045,6 +4045,7 @@ NTSYSAPI NTSTATUS  WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);
 NTSYSAPI NTSTATUS  WINAPI NtTerminateProcess(HANDLE,LONG);
 NTSYSAPI NTSTATUS  WINAPI NtTerminateThread(HANDLE,LONG);
 NTSYSAPI NTSTATUS  WINAPI NtTestAlert(VOID);
+NTSYSAPI NTSTATUS  WINAPI NtTraceControl(ULONG,void*,ULONG,void*,ULONG,ULONG*);
 NTSYSAPI NTSTATUS  WINAPI NtUnloadDriver(const UNICODE_STRING *);
 NTSYSAPI NTSTATUS  WINAPI NtUnloadKey(POBJECT_ATTRIBUTES);
 NTSYSAPI NTSTATUS  WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE);




More information about the wine-cvs mailing list