Código C++:
Ver original
hscManager = 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.