[LSASRV]
authorEric Kohl <eric.kohl@reactos.org>
Wed, 21 Sep 2016 07:27:18 +0000 (07:27 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Wed, 21 Sep 2016 07:27:18 +0000 (07:27 +0000)
Open/Create and set the \\SECURITY\\LSA_AUTHENTICATION_INITIALIZED event after the LsaAuthenticationPort has been created.

svn path=/trunk/; revision=72755

reactos/dll/win32/lsasrv/authport.c
reactos/dll/win32/lsasrv/lsasrv.h

index d6b8482..05b6c58 100644 (file)
@@ -262,8 +262,12 @@ StartAuthenticationPort(VOID)
     OBJECT_ATTRIBUTES ObjectAttributes;
     UNICODE_STRING PortName;
     DWORD ThreadId;
+    UNICODE_STRING EventName;
+    HANDLE EventHandle;
     NTSTATUS Status;
 
+    TRACE("StartAuthenticationPort()\n");
+
     /* Initialize the logon context list */
     InitializeListHead(&LsapLogonContextList);
 
@@ -283,7 +287,41 @@ StartAuthenticationPort(VOID)
                           sizeof(LSA_API_MSG) * 32);
     if (!NT_SUCCESS(Status))
     {
-        TRACE("NtCreatePort() failed (Status %lx)\n", Status);
+        WARN("NtCreatePort() failed (Status %lx)\n", Status);
+        return Status;
+    }
+
+    RtlInitUnicodeString(&EventName,
+                         L"\\SECURITY\\LSA_AUTHENTICATION_INITIALIZED");
+    InitializeObjectAttributes(&ObjectAttributes,
+                               &EventName,
+                               OBJ_CASE_INSENSITIVE | OBJ_PERMANENT,
+                               NULL,
+                               NULL);
+    Status = NtOpenEvent(&EventHandle,
+                         EVENT_MODIFY_STATE,
+                         &ObjectAttributes);
+    if (!NT_SUCCESS(Status))
+    {
+        TRACE("NtOpenEvent failed (Status 0x%08lx)\n", Status);
+
+        Status = NtCreateEvent(&EventHandle,
+                               EVENT_MODIFY_STATE,
+                               &ObjectAttributes,
+                               NotificationEvent,
+                               FALSE);
+        if (!NT_SUCCESS(Status))
+        {
+            WARN("NtCreateEvent failed (Status 0x%08lx)\n", Status);
+            return Status;
+        }
+    }
+
+    Status = NtSetEvent(EventHandle, NULL);
+    NtClose(EventHandle);
+    if (!NT_SUCCESS(Status))
+    {
+        WARN("NtSetEvent failed (Status 0x%08lx)\n", Status);
         return Status;
     }
 
index e931202..a19e93d 100644 (file)
@@ -22,6 +22,7 @@
 
 #define NTOS_MODE_USER
 #include <ndk/cmfuncs.h>
+#include <ndk/exfuncs.h>
 #include <ndk/kefuncs.h>
 #include <ndk/mmfuncs.h>
 #include <ndk/obfuncs.h>