[2/2] services: Remove deprecated support for LockServiceDatabase.

Sebastian Lackner sebastian at fds-team.de
Fri Mar 10 07:40:56 CST 2017


Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---

Next step will be to get rid of the global startup lock entirely
(to avoid explicit handling of locked databases everywhere).

 programs/services/rpc.c           |   14 ++------------
 programs/services/tests/service.c |    1 -
 2 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/programs/services/rpc.c b/programs/services/rpc.c
index 08b5776aebd..c67b7aca4bf 100644
--- a/programs/services/rpc.c
+++ b/programs/services/rpc.c
@@ -82,7 +82,7 @@ struct sc_service_handle       /* service handle */
 
 struct sc_lock
 {
-    struct scmdatabase *db;
+    BYTE dummy;
 };
 
 static const WCHAR emptyW[] = {0};
@@ -1258,7 +1258,6 @@ DWORD __cdecl svcctl_CloseServiceHandle(
 static void SC_RPC_LOCK_destroy(SC_RPC_LOCK hLock)
 {
     struct sc_lock *lock = hLock;
-    scmdatabase_unlock_startup(lock->db);
     HeapFree(GetProcessHeap(), 0, lock);
 }
 
@@ -1280,19 +1279,10 @@ DWORD __cdecl svcctl_LockServiceDatabase(
     if ((err = validate_scm_handle(hSCManager, SC_MANAGER_LOCK, &manager)) != ERROR_SUCCESS)
         return err;
 
-    if (!scmdatabase_lock_startup(manager->db))
-        return ERROR_SERVICE_DATABASE_LOCKED;
-
-    lock = HeapAlloc(GetProcessHeap(), 0, sizeof(struct sc_lock));
-    if (!lock)
-    {
-        scmdatabase_unlock_startup(manager->db);
+    if (!(lock = HeapAlloc(GetProcessHeap(), 0, sizeof(*lock))))
         return ERROR_NOT_ENOUGH_SERVER_MEMORY;
-    }
 
-    lock->db = manager->db;
     *phLock = lock;
-
     return ERROR_SUCCESS;
 }
 
diff --git a/programs/services/tests/service.c b/programs/services/tests/service.c
index 8ca25ad890b..13f4427fd25 100644
--- a/programs/services/tests/service.c
+++ b/programs/services/tests/service.c
@@ -406,7 +406,6 @@ static void test_service(void)
     lock = LockServiceDatabase(scm_handle);
     ok(lock != NULL, "LockServiceDatabase failed: %u\n", GetLastError());
     res = StartServiceA(service_handle, 2, argv);
-todo_wine
     ok(res || broken(!res && GetLastError() == ERROR_SERVICE_DATABASE_LOCKED) /* < Vista */,
        "StartService failed: %u\n", GetLastError());
     res2 = UnlockServiceDatabase(lock);
-- 
2.11.0



More information about the wine-patches mailing list