Extracto de la referencia:
Código C:
Ver originalGetServiceDisplayName
...
Return Values:
If the functions succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Si no entra al if llama a GetLastError para ver el codigo de error; para hacerlo mas amigable puedes usar la 'traduccion' del FormatMessage a ver que te dice:
Código C:
Ver originalchar* bff;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError(), 0, (char *)&bff, 0, 0);
MessageBox(0, bff, 0, MB_OK);
LocalFree(bff);
Siento no ser de mas ayuda
Saludos
vosk
p.s. una cosa, recuerda que para cada new necesitas un delete, te lo comento por el new que tienes dentro del for