Hola, estoy usando la función GetServiceDisplayName pero no me recupera nada al hacer el llamado de la función en el if esta se sale pongo a continuación el código:
Código C++:
Ver originalhscManager = OpenSCManager(0, 0, SC_MANAGER_ENUMERATE_SERVICE);
while( EnumServicesStatusEx( hscManager, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, service, bufSize,
&bufSize, &numOfService, 0, 0) == 0 )
delete [] service, service = new BYTE[bufSize *= 2];
LPENUM_SERVICE_STATUS_PROCESS services = (LPENUM_SERVICE_STATUS_PROCESS) service;
for(int i = 0; i < numOfService; i++){
val.pid = services->ServiceStatusProcess.dwProcessId;
CopyString(services->lpServiceName, val.service, MAX_PATH);
GetServiceDisplayName (hscManager, services->lpServiceName, NULL, &buffer);
if (buffer)
{
lpDisplayName = new TCHAR[buffer +1];
ZeroMemory (lpDisplayName, buffer + 1);
if (GetServiceDisplayName (hscManager, services->lpServiceName, lpDisplayName, &buffer))
{
CopyString (lpDisplayName, displayName, MAX_PATH);
}
}
services++;
initialRunxes->push_back(val);
}
El problema es que se supone que la función GetServiceDisplayName debe devolver el parámetro
lpDisplayName y si la función se ejecuta bien retorna un valor distinto de cero por lo que se ejecutaría el if pero no entra al if por lo que la función está fallando y no se por que.
Si alguien puede ayudarme se los agradecería.