Rolf Kalbermatter : advapi32: Implement GetServiceDisplayNameW.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue May 8 06:59:47 CDT 2007
Module: wine
Branch: master
Commit: d0790f1bfe092dfe4bc214dd54f4c71160f752e9
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d0790f1bfe092dfe4bc214dd54f4c71160f752e9
Author: Rolf Kalbermatter <r.kalbermatter at hccnet.nl>
Date: Mon May 7 21:56:31 2007 +0200
advapi32: Implement GetServiceDisplayNameW.
---
dlls/advapi32/service.c | 31 +++++++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 5f36215..22489a9 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -2073,9 +2073,36 @@ BOOL WINAPI GetServiceDisplayNameA( SC_HANDLE hSCManager, LPCSTR lpServiceName,
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, lpDisplayName, &size);
+ if (ret)
+ {
+ if (lpDisplayName && *lpcchBuffer) *lpDisplayName = 0;
+
+ if (ret == ERROR_MORE_DATA)
+ {
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ *lpcchBuffer = (size / sizeof(WCHAR)) - 1;
+ }
+ else
+ SetLastError(ret);
+ return FALSE;
+ }
+ return TRUE;
}
/******************************************************************************
More information about the wine-cvs
mailing list