ADVAPI32: Implement GetServiceDisplayNameA

Rolf Kalbermatter r.kalbermatter at hccnet.nl
Sun Apr 22 15:27:01 CDT 2007


Changelog
  dlls/advapi32/service.c
   - Implement GetServiceDisplayNameA

License: X11/LGPL

Rolf Kalbermatter
-------------- next part --------------
>From 7c2159e512f81ed465d43544bad2707b27474292 Mon Sep 17 00:00:00 2001
From: Rolf Kalbermatter <r.kalbermatter at hccnet.nl>
Date: Sun, 22 Apr 2007 21:54:09 +0200
Subject: [PATCH] Implement GetServiceDisplayNameA
---
 dlls/advapi32/service.c |   33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 1486e9e..db8d226 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -1967,10 +1967,37 @@ BOOL WINAPI QueryServiceLockStatusW( SC_
 BOOL WINAPI GetServiceDisplayNameA( SC_HANDLE hSCManager, LPCSTR lpServiceName,
   LPSTR lpDisplayName, LPDWORD lpcchBuffer)
 {
-    FIXME("%p %s %p %p\n", hSCManager,
+    struct sc_manager *hscm;
+    DWORD type, size;
+    LONG ret;
+
+    TRACE("%p %s %p %p\n", hSCManager,
           debugstr_a(lpServiceName), lpDisplayName, lpcchBuffer);
-    return FALSE;
-}
+
+    hscm = sc_handle_get_handle_data(hSCManager, SC_HTYPE_MANAGER);
+    if (!hscm)
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return FALSE;
+    }
+
+    size = *lpcchBuffer;
+    ret = RegGetValueA(hscm->hkey, lpServiceName, "DisplayName", RRF_RT_REG_SZ, &type, NULL, &size);
+    switch (ret)
+    {
+        case ERROR_SUCCESS:
+            ret = RegGetValueA(hscm->hkey, lpServiceName, "DisplayName", RRF_RT_REG_SZ, &type, lpDisplayName, &size);
+            *lpcchBuffer = size - 1;
+            break;
+        case ERROR_MORE_DATA:
+            SetLastError(ERROR_INSUFFICIENT_BUFFER);
+            *lpcchBuffer = size - 1;
+            break;
+        default:
+            SetLastError(ret);
+            break;
+	}
+    return (ret ? FALSE : TRUE);}
 
 /******************************************************************************
  * GetServiceDisplayNameW  [ADVAPI32.@]
-- 
1.4.1



More information about the wine-patches mailing list