- Add RegisterServiceCtrlHandlerExA/W
- Add stubs for CheckTokenMembership and LsaGetUserName
Modified: trunk/reactos/lib/advapi32/advapi32.def
Modified: trunk/reactos/lib/advapi32/sec/lsa.c
Modified: trunk/reactos/lib/advapi32/service/sctrl.c
Modified: trunk/reactos/lib/advapi32/token/token.c

Modified: trunk/reactos/lib/advapi32/advapi32.def
--- trunk/reactos/lib/advapi32/advapi32.def	2005-02-06 21:55:07 UTC (rev 13449)
+++ trunk/reactos/lib/advapi32/advapi32.def	2005-02-06 21:57:44 UTC (rev 13450)
@@ -45,6 +45,7 @@
 BuildTrusteeWithSidW@8
 ChangeServiceConfigA@44
 ChangeServiceConfigW@44
+CheckTokenMembership@12
 ClearEventLogA@8
 ClearEventLogW@8
 CloseEventLog@4
@@ -235,7 +236,7 @@
 LsaFreeMemory@4
 ;LsaGetQuotasForAccount@8
 ;LsaGetSystemAccessAccount@8
-;LsaGetUserName@8
+LsaGetUserName@8
 ;LsaICLookupNames@32
 ;LsaICLookupSids@32
 ;LsaLookupNames@20
@@ -359,6 +360,8 @@
 RegisterEventSourceW@8
 RegisterServiceCtrlHandlerA@8
 RegisterServiceCtrlHandlerW@8
+RegisterServiceCtrlHandlerExA@12
+RegisterServiceCtrlHandlerExW@12
 ;ReplaceAllAccessRightsA
 ;ReplaceAllAccessRightsW
 ReportEventA@36

Modified: trunk/reactos/lib/advapi32/sec/lsa.c
--- trunk/reactos/lib/advapi32/sec/lsa.c	2005-02-06 21:55:07 UTC (rev 13449)
+++ trunk/reactos/lib/advapi32/sec/lsa.c	2005-02-06 21:57:44 UTC (rev 13450)
@@ -1,5 +1,4 @@
-/* $Id$
- *
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
  * FILE:            lib/advapi32/sec/lsa.c
@@ -493,3 +492,19 @@
 {
   return STATUS_NOT_IMPLEMENTED;
 }
+
+/*
+ * @unimplemented
+ */
+NTSTATUS
+STDCALL
+LsaGetUserName(
+    PUNICODE_STRING *UserName,
+    PUNICODE_STRING *DomainName)
+{
+  DPRINT1("LsaGetUserName not implemented\n");
+
+  return STATUS_NOT_IMPLEMENTED;
+}
+
+/* EOF */

Modified: trunk/reactos/lib/advapi32/service/sctrl.c
--- trunk/reactos/lib/advapi32/service/sctrl.c	2005-02-06 21:55:07 UTC (rev 13449)
+++ trunk/reactos/lib/advapi32/service/sctrl.c	2005-02-06 21:57:44 UTC (rev 13450)
@@ -31,6 +31,8 @@
     LPSERVICE_MAIN_FUNCTIONW lpFuncW;
   } Main;
   LPHANDLER_FUNCTION HandlerFunction;
+  LPHANDLER_FUNCTION_EX HandlerFunctionEx;
+  LPVOID HandlerContext;
   SERVICE_STATUS ServiceStatus;
   BOOL bUnicode;
   LPWSTR Arguments;
@@ -326,12 +328,70 @@
     }
 
   Service->HandlerFunction = lpHandlerProc;
+  Service->HandlerFunctionEx = NULL;
 
   return (SERVICE_STATUS_HANDLE)Service->ThreadId;
 }
 
 
 /**********************************************************************
+ *	RegisterServiceCtrlHandlerExA
+ *
+ * @implemented
+ */
+SERVICE_STATUS_HANDLE STDCALL
+RegisterServiceCtrlHandlerExA(LPCSTR lpServiceName,
+			      LPHANDLER_FUNCTION_EX lpHandlerProc,
+			      LPVOID lpContext)
+{
+  ANSI_STRING ServiceNameA;
+  UNICODE_STRING ServiceNameU;
+  SERVICE_STATUS_HANDLE SHandle;
+
+  RtlInitAnsiString(&ServiceNameA, (LPSTR)lpServiceName);
+  if (!NT_SUCCESS(RtlAnsiStringToUnicodeString(&ServiceNameU, &ServiceNameA, TRUE)))
+    {
+      SetLastError(ERROR_OUTOFMEMORY);
+      return (SERVICE_STATUS_HANDLE)0;
+    }
+
+  SHandle = RegisterServiceCtrlHandlerExW(ServiceNameU.Buffer,
+					  lpHandlerProc,
+					  lpContext);
+
+  RtlFreeUnicodeString(&ServiceNameU);
+
+  return SHandle;
+}
+
+
+/**********************************************************************
+ *	RegisterServiceCtrlHandlerExW
+ *
+ * @implemented
+ */
+SERVICE_STATUS_HANDLE STDCALL
+RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName,
+			      LPHANDLER_FUNCTION_EX lpHandlerProc,
+			      LPVOID lpContext)
+{
+  PACTIVE_SERVICE Service;
+
+  Service = ScLookupServiceByServiceName((LPWSTR)lpServiceName);
+  if (Service == NULL)
+    {
+      return (SERVICE_STATUS_HANDLE)NULL;
+    }
+
+  Service->HandlerFunction = NULL;
+  Service->HandlerFunctionEx = lpHandlerProc;
+  Service->HandlerContext = lpContext;
+
+  return (SERVICE_STATUS_HANDLE)Service->ThreadId;
+}
+
+
+/**********************************************************************
  *	SetServiceBits
  *
  * @unimplemented

Modified: trunk/reactos/lib/advapi32/token/token.c
--- trunk/reactos/lib/advapi32/token/token.c	2005-02-06 21:55:07 UTC (rev 13449)
+++ trunk/reactos/lib/advapi32/token/token.c	2005-02-06 21:57:44 UTC (rev 13450)
@@ -1,5 +1,4 @@
-/* $Id$
- *
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
  * FILE:            lib/advapi32/token/token.c
@@ -11,6 +10,8 @@
 
 #include "advapi32.h"
 
+#define NDEBUG
+#include <debug.h>
 
 /*
  * @implemented
@@ -310,4 +311,18 @@
                            DuplicateTokenHandle);
 }
 
+
+/*
+ * @unimplemented
+ */
+BOOL STDCALL
+CheckTokenMembership(HANDLE Token, PSID SidToCheck, PBOOL IsMember)
+{
+  DPRINT1("CheckTokenMembership not implemented\n");
+
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+
+  return FALSE;
+}
+
 /* EOF */