[SC]
[reactos.git] / reactos / base / applications / sc / name.c
1 /*
2 * PROJECT: ReactOS Services
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/applications/sc/name.c
5 * PURPOSE:
6 * COPYRIGHT: Copyright 2016 Eric Kohl
7 *
8 */
9
10 #include "sc.h"
11
12 BOOL GetDisplayName(LPCTSTR ServiceName)
13 {
14 SC_HANDLE hManager = NULL;
15 BOOL bResult = TRUE;
16 DWORD BufferSize = 0;
17 LPTSTR pBuffer = NULL;
18
19 hManager = OpenSCManager(NULL,
20 NULL,
21 SC_MANAGER_CONNECT);
22 if (hManager == NULL)
23 {
24 _tprintf(_T("[SC] OpenSCManager FAILED %lu:\n\n"), GetLastError());
25 bResult = FALSE;
26 goto done;
27 }
28
29 if (!GetServiceDisplayName(hManager,
30 ServiceName,
31 NULL,
32 &BufferSize))
33 {
34 if (BufferSize == 0)
35 {
36 _tprintf(_T("[SC] GetServiceDisplayName FAILED %lu:\n\n"), GetLastError());
37 bResult = FALSE;
38 goto done;
39 }
40 }
41
42 pBuffer = HeapAlloc(GetProcessHeap(), 0, (BufferSize + 1) * sizeof(TCHAR));
43 if (pBuffer == NULL)
44 {
45 SetLastError(ERROR_OUTOFMEMORY);
46 _tprintf(_T("[SC] HeapAlloc FAILED %lu:\n\n"), GetLastError());
47 bResult = FALSE;
48 goto done;
49 }
50
51 BufferSize++;
52 if (!GetServiceDisplayName(hManager,
53 ServiceName,
54 pBuffer,
55 &BufferSize))
56 {
57 _tprintf(_T("[SC] GetServiceDisplayName FAILED %lu:\n\n"), GetLastError());
58 bResult = FALSE;
59 goto done;
60 }
61
62 _tprintf(_T("[SC] GetServiceDisplayName SUCCESS Name = %s\n"), pBuffer);
63
64 done:
65 if (bResult == FALSE)
66 ReportLastError();
67
68 if (pBuffer != NULL)
69 HeapFree(GetProcessHeap(), 0, pBuffer);
70
71 if (hManager)
72 CloseServiceHandle(hManager);
73
74 return bResult;
75 }