[PATCH 1/2] advapi32: Add EventRegister and EventUnregister tests

Andrew Eikum aeikum at codeweavers.com
Thu Oct 31 08:58:02 CDT 2019


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
 dlls/advapi32/tests/eventlog.c | 35 ++++++++++++++++++++++++++++++++++
 dlls/ntdll/misc.c              |  2 ++
 2 files changed, 37 insertions(+)

diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c
index d613c95315e..f12a6a157bd 100644
--- a/dlls/advapi32/tests/eventlog.c
+++ b/dlls/advapi32/tests/eventlog.c
@@ -28,12 +28,15 @@
 #include "winreg.h"
 #include "sddl.h"
 #include "wmistr.h"
+#include "evntprov.h"
 #include "evntrace.h"
 
 #include "wine/test.h"
 
 static BOOL (WINAPI *pCreateWellKnownSid)(WELL_KNOWN_SID_TYPE,PSID,PSID,DWORD*);
 static BOOL (WINAPI *pGetEventLogInformation)(HANDLE,DWORD,LPVOID,DWORD,LPDWORD);
+static ULONG (WINAPI *pEventRegister)(const GUID *,PENABLECALLBACK,void *,REGHANDLE *);
+static ULONG (WINAPI *pEventUnregister)(REGHANDLE);
 
 static BOOL (WINAPI *pGetComputerNameExA)(COMPUTER_NAME_FORMAT,LPSTR,LPDWORD);
 static BOOL (WINAPI *pWow64DisableWow64FsRedirection)(PVOID *);
@@ -46,6 +49,8 @@ static void init_function_pointers(void)
 
     pCreateWellKnownSid = (void*)GetProcAddress(hadvapi32, "CreateWellKnownSid");
     pGetEventLogInformation = (void*)GetProcAddress(hadvapi32, "GetEventLogInformation");
+    pEventRegister = (void*)GetProcAddress(hadvapi32, "EventRegister");
+    pEventUnregister = (void*)GetProcAddress(hadvapi32, "EventUnregister");
 
     pGetComputerNameExA = (void*)GetProcAddress(hkernel32, "GetComputerNameExA");
     pWow64DisableWow64FsRedirection = (void*)GetProcAddress(hkernel32, "Wow64DisableWow64FsRedirection");
@@ -1146,6 +1151,35 @@ static void cleanup_eventlog(void)
     ok(bret, "Expected MoveFileEx to succeed: %d\n", GetLastError());
 }
 
+static void test_trace_event_params(void)
+{
+    static const GUID test_guid = {0x57696E65, 0x0000, 0x0000, {0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01}};
+
+    REGHANDLE reg_handle;
+    ULONG uret;
+
+    if (!pEventRegister)
+    {
+        win_skip("advapi32.EventRegister is missing, skipping trace event tests\n");
+        return;
+    }
+
+    uret = pEventRegister(NULL, NULL, NULL, &reg_handle);
+    todo_wine ok(uret == ERROR_INVALID_PARAMETER, "EventRegister gave wrong error: %#x\n", uret);
+
+    uret = pEventRegister(&test_guid, NULL, NULL, NULL);
+    ok(uret == ERROR_INVALID_PARAMETER, "EventRegister gave wrong error: %#x\n", uret);
+
+    uret = pEventRegister(&test_guid, NULL, NULL, &reg_handle);
+    ok(uret == ERROR_SUCCESS, "EventRegister gave wrong error: %#x\n", uret);
+
+    uret = pEventUnregister(0);
+    todo_wine ok(uret == ERROR_INVALID_HANDLE, "EventUnregister gave wrong error: %#x\n", uret);
+
+    uret = pEventUnregister(reg_handle);
+    ok(uret == ERROR_SUCCESS, "EventUnregister gave wrong error: %#x\n", uret);
+}
+
 static void test_start_trace(void)
 {
     const char sessionname[] = "wine";
@@ -1259,6 +1293,7 @@ START_TEST(eventlog)
     test_openbackup();
     test_read();
     test_clear();
+    test_trace_event_params();
 
     /* Functional tests */
     if (create_new_eventlog())
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
index 2a135518e75..c29a1c26c26 100644
--- a/dlls/ntdll/misc.c
+++ b/dlls/ntdll/misc.c
@@ -403,6 +403,8 @@ ULONG WINAPI EtwEventRegister( LPCGUID provider, PENABLECALLBACK callback, PVOID
 {
     FIXME("(%s, %p, %p, %p) stub.\n", debugstr_guid(provider), callback, context, handle);
 
+    if (!handle) return ERROR_INVALID_PARAMETER;
+
     *handle = 0xdeadbeef;
     return ERROR_SUCCESS;
 }
-- 
2.23.0





More information about the wine-devel mailing list