ADVAPI32: Implement GetServiceDisplayNameW

Rolf Kalbermatter r.kalbermatter at hccnet.nl
Sun Apr 22 15:26:56 CDT 2007


Changelog
  dlls/advapi32/service.c
   - Implement GetServiceDisplayNameW

License: X11/LGPL

Rolf Kalbermatter
-------------- next part --------------
>From d6027dd63122b4d73f8495c10087cf398307cd62 Mon Sep 17 00:00:00 2001
From: Rolf Kalbermatter <r.kalbermatter at hccnet.nl>
Date: Sun, 22 Apr 2007 21:48:58 +0200
Subject: [PATCH] Implement GetServiceDisplayNameW
---
 dlls/advapi32/service.c |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 3be5275..1486e9e 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -1978,9 +1978,37 @@ BOOL WINAPI GetServiceDisplayNameA( SC_H
 BOOL WINAPI GetServiceDisplayNameW( SC_HANDLE hSCManager, LPCWSTR lpServiceName,
   LPWSTR 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_w(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 * sizeof(WCHAR);
+    ret = RegGetValueW(hscm->hkey, lpServiceName, szDisplayName, RRF_RT_REG_SZ, &type, NULL, &size);
+    switch (ret)
+    {
+        case ERROR_SUCCESS:
+            ret = RegGetValueW(hscm->hkey, lpServiceName, szDisplayName, RRF_RT_REG_SZ, &type, lpDisplayName, &size);
+            *lpcchBuffer = (size / sizeof(WCHAR)) - 1;
+            break;
+        case ERROR_MORE_DATA:
+            SetLastError(ERROR_INSUFFICIENT_BUFFER);
+            *lpcchBuffer = (size / sizeof(WCHAR)) - 1;
+            break;
+        default:
+            SetLastError(ret);
+            break;
+	}
+    return (ret ? FALSE : TRUE);
 }
 
 /******************************************************************************
-- 
1.4.1



More information about the wine-patches mailing list