Resend: Implemented LockServiceDatabase and UnlockServiceDatabase

Alexander Yaworsky yaworsky at migusoft.ru
Thu Sep 9 02:55:24 CDT 2004


Hello

Is something wrong?

ChangeLog:

Implemented LockServiceDatabase and UnlockServiceDatabase

Index: dlls/advapi32/service.c
===================================================================
RCS file: /home/wine/wine/dlls/advapi32/service.c,v
retrieving revision 1.53
diff -u -r1.53 service.c
--- dlls/advapi32/service.c 6 Sep 2004 20:28:32 -0000 1.53
+++ dlls/advapi32/service.c 8 Sep 2004 02:24:32 -0000
@@ -43,6 +43,8 @@
 static const WCHAR szServiceManagerKey[] = { 'S','y','s','t','e','m','\\',
       'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
       'S','e','r','v','i','c','e','s','\\',0 };
+static const WCHAR  szSCMLock[] = {'A','D','V','A','P','I','_','S','C','M',
+                                   'L','O','C','K',0};
 
 /******************************************************************************
  * SC_HANDLEs
@@ -286,8 +288,22 @@
  */
 LPVOID WINAPI LockServiceDatabase (SC_HANDLE hSCManager)
 {
-        FIXME("%p\n",hSCManager);
-        return (SC_HANDLE)0xcacacafe;
+    HANDLE ret;
+
+    TRACE("%p\n",hSCManager);
+
+    ret = CreateFileMappingW( INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE,
+                              0, MAX_SERVICE_NAME * sizeof(WCHAR), szSCMLock );
+    if( ret && GetLastError() == ERROR_ALREADY_EXISTS )
+    {
+        CloseHandle( ret );
+        ret = NULL;
+        SetLastError( ERROR_SERVICE_DATABASE_LOCKED );
+    }
+
+    TRACE("returning %p\n", ret);
+
+    return ret;
 }
 
 /******************************************************************************
@@ -295,8 +311,9 @@
  */
 BOOL WINAPI UnlockServiceDatabase (LPVOID ScLock)
 {
-        FIXME(": %p\n",ScLock);
- return TRUE;
+    TRACE("%p\n",ScLock);
+
+    return CloseHandle( (HANDLE) ScLock );
 }
 
 /******************************************************************************




More information about the wine-patches mailing list