Je suppose que pour détecter la demande d'arrêt tu t'inscrit sur l'événement SERVICE_CONTROL_STOP. Il faut savoir que lors de l'arrêt du système, Windows n'envoie pas cet événement aux services, il leur envoie l'événement SERVICE_CONTROL_SHUTDOWN.
Pour le recevoir il faut signaler au système que tu veux le recevoir par un appel à SetServiceStatus. Exemple :
...
serviceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN ;
...
SetServiceStatus (serviceStatusHandle, &serviceStatus) ) ;
Message édité par gotrunk le 14-01-2008 à 09:01:15