2 * PROJECT: ReactOS Services
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/applications/sc/depend.c
6 * COPYRIGHT: Copyright 2016 Eric Kohl
12 BOOL
EnumDepend(LPCTSTR ServiceName
)
14 SC_HANDLE hManager
= NULL
;
15 SC_HANDLE hService
= NULL
;
18 DWORD EntriesRead
= 0;
19 LPENUM_SERVICE_STATUS pBuffer
= NULL
;
22 hManager
= OpenSCManager(NULL
,
27 _tprintf(_T("[SC] OpenSCManager FAILED %lu:\n\n"), GetLastError());
32 hService
= OpenService(hManager
, ServiceName
, SERVICE_ENUMERATE_DEPENDENTS
);
35 _tprintf(_T("[SC] OpenService FAILED %lu:\n\n"), GetLastError());
40 if (!EnumDependentServices(hService
,
49 _tprintf(_T("[SC] EnumDependentServices FAILED %lu:\n\n"), GetLastError());
55 pBuffer
= HeapAlloc(GetProcessHeap(), 0, BufferSize
);
58 SetLastError(ERROR_OUTOFMEMORY
);
59 _tprintf(_T("[SC] HeapAlloc FAILED %lu:\n\n"), GetLastError());
64 if (!EnumDependentServices(hService
,
71 _tprintf(_T("[SC] EnumDependentServices FAILED %lu:\n\n"), GetLastError());
76 _tprintf(_T("Enum: entriesRead = %lu\n"), EntriesRead
);
78 for (i
= 0; i
< EntriesRead
; i
++)
81 _tprintf(_T("SERVICE_NAME: %s\n"), pBuffer
[i
].lpServiceName
);
82 _tprintf(_T("DISPLAY_NAME: %s\n"), pBuffer
[i
].lpDisplayName
);
83 PrintServiceStatus(&pBuffer
[i
].ServiceStatus
);
91 HeapFree(GetProcessHeap(), 0, pBuffer
);
94 CloseServiceHandle(hService
);
97 CloseServiceHandle(hManager
);