[NET] Properly check return value of EnumServicesStatusW on first call

This commit is contained in:
Jérôme Gardou 2021-06-17 15:59:48 +02:00 committed by Jérôme Gardou
parent 5aafeb473f
commit 6bf64780e4

View file

@ -23,6 +23,7 @@ EnumerateRunningServices(VOID)
INT i;
INT nError = 0;
DWORD dwError = ERROR_SUCCESS;
BOOL ret;
hManager = OpenSCManagerW(NULL,
SERVICES_ACTIVE_DATABASE,
@ -34,14 +35,22 @@ EnumerateRunningServices(VOID)
goto done;
}
EnumServicesStatusW(hManager,
SERVICE_WIN32,
SERVICE_ACTIVE,
NULL,
0,
&dwBufferSize,
&dwServiceCount,
&dwResumeHandle);
ret = EnumServicesStatusW(hManager,
SERVICE_WIN32,
SERVICE_ACTIVE,
NULL,
0,
&dwBufferSize,
&dwServiceCount,
&dwResumeHandle);
if (ret)
{
/* Nothing to enumerate ?! */
goto done;
}
dwError = GetLastError();
if (dwError != ERROR_INSUFFICIENT_BUFFER)
goto done;
if (dwBufferSize != 0)
{