Como faço para obter o nome de exibição do serviço em C ++?

Eu estou tentando obter o nome de exibição do serviço em execução usando c ++. Eu estava tentando usar a função GetServiceDisplayName mas parece não estar funcionando, não tenho certeza do porquê.

TTServiceBegin( const char *svcName, PFNSERVICE pfnService, bool *svc, PFNTERMINATE pfnTerm,
int flags, int argc, char *argv[], DWORD dynamiteThreadWaitTime )
{
SC_HANDLE serviceStatusHandle;
DWORD dwSizeNeeded = 0 ;
TCHAR* szKeyName = NULL ;

serviceStatusHandle=OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE ,SC_MANAGER_ALL_ACCESS);

GetServiceDisplayName(serviceStatusHandle,svcName, NULL, &dwSizeNeeded);
if(dwSizeNeeded)
{
    szKeyName = new char[dwSizeNeeded+1];
    ZeroMemory(szKeyName,dwSizeNeeded+1);
    if(GetServiceDisplayName(serviceStatusHandle ,svcName,szKeyName,&dwSizeNeeded)!=0)
    {
        MessageBox(0,szKeyName,"Got the key name",0);
    }


}        

Quando executo esse código, nunca consigo ver o valor de szKeyName no meu depurador e ele entra no bloco if da caixa de mensagem, mas nunca exibe a caixa de mensagem. Não tem certeza porque?

De qualquer forma, para que isso funcione para obter o nome de exibição do serviço ou qualquer outra maneira mais fácil de realizar essa tarefa?

questionAnswers(2)

yourAnswerToTheQuestion