Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/10/2013, 14:45
EL_DOC
 
Fecha de Ingreso: junio-2008
Mensajes: 109
Antigüedad: 15 años, 11 meses
Puntos: 0
Pregunta Problemas al usar función GetServiceDisplayName

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 original
  1. hscManager = OpenSCManager(0, 0, SC_MANAGER_ENUMERATE_SERVICE);
  2.  
  3.     while( EnumServicesStatusEx( hscManager, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, service, bufSize,
  4.         &bufSize, &numOfService, 0, 0) == 0 )
  5.         delete [] service, service = new BYTE[bufSize *= 2];
  6.        
  7.     LPENUM_SERVICE_STATUS_PROCESS services = (LPENUM_SERVICE_STATUS_PROCESS) service;
  8.        
  9.     for(int i = 0; i < numOfService; i++){
  10.  
  11.         val.pid = services->ServiceStatusProcess.dwProcessId;
  12.         CopyString(services->lpServiceName, val.service, MAX_PATH);
  13.                
  14.         GetServiceDisplayName (hscManager, services->lpServiceName, NULL, &buffer);
  15.         if (buffer)
  16.         {
  17.             lpDisplayName = new TCHAR[buffer +1];
  18.             ZeroMemory (lpDisplayName, buffer + 1);
  19.  
  20.                        
  21.             if (GetServiceDisplayName (hscManager, services->lpServiceName, lpDisplayName, &buffer))
  22.             {
  23.                 CopyString (lpDisplayName, displayName, MAX_PATH);
  24.             }
  25.         }
  26.                
  27.         services++;
  28.  
  29.         initialRunxes->push_back(val);
  30.     }


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.