[ros-diffs] [ekohl] 45123: Implement ElfrRegisterEventSourceA.

ekohl at svn.reactos.org ekohl at svn.reactos.org
Sun Jan 17 16:16:27 CET 2010


Author: ekohl
Date: Sun Jan 17 16:16:26 2010
New Revision: 45123

URL: http://svn.reactos.org/svn/reactos?rev=45123&view=rev
Log:
Implement ElfrRegisterEventSourceA.

Modified:
    trunk/reactos/base/services/eventlog/rpc.c

Modified: trunk/reactos/base/services/eventlog/rpc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/services/eventlog/rpc.c?rev=45123&r1=45122&r2=45123&view=diff
==============================================================================
--- trunk/reactos/base/services/eventlog/rpc.c [iso-8859-1] (original)
+++ trunk/reactos/base/services/eventlog/rpc.c [iso-8859-1] Sun Jan 17 16:16:26 2010
@@ -29,7 +29,6 @@
     }
 
     Status = RpcServerRegisterIf(eventlog_v0_0_s_ifspec, NULL, NULL);
-
     if (Status != RPC_S_OK)
     {
         DPRINT("RpcServerRegisterIf() failed (Status %lx)\n", Status);
@@ -37,7 +36,6 @@
     }
 
     Status = RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, FALSE);
-
     if (Status != RPC_S_OK)
     {
         DPRINT("RpcServerListen() failed (Status %lx)\n", Status);
@@ -533,8 +531,48 @@
     DWORD MinorVersion,
     IELF_HANDLE *LogHandle)
 {
-    UNIMPLEMENTED;
-    return STATUS_NOT_IMPLEMENTED;
+    UNICODE_STRING UNCServerNameW = { 0, 0, NULL };
+    UNICODE_STRING ModuleNameW    = { 0, 0, NULL };
+
+    if (UNCServerName &&
+        !RtlCreateUnicodeStringFromAsciiz(&UNCServerNameW, UNCServerName))
+    {
+        return STATUS_NO_MEMORY;
+    }
+
+    if (ModuleName &&
+        !RtlAnsiStringToUnicodeString(&ModuleNameW, (PANSI_STRING)ModuleName, TRUE))
+    {
+        RtlFreeUnicodeString(&UNCServerNameW);
+        return STATUS_NO_MEMORY;
+    }
+
+    /* RegModuleName must be an empty string */
+    if (RegModuleName->Length > 0)
+    {
+        RtlFreeUnicodeString(&UNCServerNameW);
+        RtlFreeUnicodeString(&ModuleNameW);
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    if ((MajorVersion != 1) || (MinorVersion != 1))
+    {
+        RtlFreeUnicodeString(&UNCServerNameW);
+        RtlFreeUnicodeString(&ModuleNameW);
+        return STATUS_INVALID_PARAMETER;
+    }
+
+    /*FIXME: UNCServerName must specify the server or empty for local */
+
+    /*FIXME: Must verify that caller has write access */
+
+    *LogHandle = ElfCreateEventLogHandle(ModuleNameW.Buffer,
+                                         TRUE);
+
+    RtlFreeUnicodeString(&UNCServerNameW);
+    RtlFreeUnicodeString(&ModuleNameW);
+
+    return STATUS_SUCCESS;
 }
 
 




More information about the Ros-diffs mailing list