Service sous Visual C++ 2003
J'ai essayé de faire mon premier service sous Visual C++ 2003 en m'inspirant (c'est même du plagiat) de l'exemple donné dans la FAQ du site (voir http://c.developpez.com/faq/vc/?page...wToMakeService)
Visual C++ me retourne 2 erreurs au build:
- impossible de convertir 'const char *' en LPSTR à la ligne
Code:
1 2 3 4 5 6 7
| int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
SERVICE_TABLE_ENTRY serviceTable[]=
{
{SERVICE_NAME,(LPSERVICE_MAIN_FUNCTION)ServiceMain},
{NULL , NULL}
}; |
Problème réglé en remplaçant
Code:
const char *SERVICE_NAME= "TestService";
par
Code:
LPSTR SERVICE_NAME= "TestService";
- le second problème, je ne trouve pas:
error C2065: 'TerminateEvent' : indetificateur non déclaré à la ligne suivante:
Code:
WaitForSingleObject(TerminateEvent,INFINITE);
Quelqu'un peut-il m'aider?
Re: Service sous Visual C++ 2003
Citation:
Envoyé par lolo le belge
Problème réglé en remplaçant
Code:
const char *SERVICE_NAME= "TestService";
par
Code:
LPSTR SERVICE_NAME= "TestService";
ça marche, mais d'un point de vue du langage tu n'es pas à l'abri d'un problème. Si jamais le nom SERVICE_NAME est modifié (écriture dans la chaine pointée), tu obtiens un comportement indéfini qui sous Windows se traduit par un plantage (les chaînes constantes sont en lecture seule).
Change plutôt par:
Code:
TCHAR SERVICE_NAME[]= TEXT( "TestService" );
au passage tu rends aussi ton code compatible UNICODE.
Re: Service sous Visual C++ 2003
Citation:
Envoyé par Aurelien.Regat-Barrel
Citation:
Envoyé par lolo le belge
Problème réglé en remplaçant
Code:
const char *SERVICE_NAME= "TestService";
par
Code:
LPSTR SERVICE_NAME= "TestService";
ça marche, mais d'un point de vue du langage tu n'es pas à l'abri d'un problème. Si jamais le nom SERVICE_NAME est modifié (écriture dans la chaine pointée), tu obtiens un comportement indéfini qui sous Windows se traduit par un plantage (les chaînes constantes sont en lecture seule).
Change plutôt par:
Code:
TCHAR SERVICE_NAME[]= TEXT( "TestService" );
au passage tu rends aussi ton code compatible UNICODE.
Merci de ton conseil, je vais faire comme ça.