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