Arret services a l'arret de windows - Win NT/2K/XP - Windows & Software
Marsh Posté le 24-10-2007 à 12:16:25
Que veux tu dire par "mon périphérique reste allumé" ?
Il reste allumé alors que le PC est eteint ?
Marsh Posté le 24-10-2007 à 12:20:12
le périphérique dispose de sa propre alim.
Mon service envoie une commande au périphérique pour lui demander de s'arrêter proprement.
Cette commande est envoyé quand le service s'arrête (au moment du net stop par exemple).
Mais a l'arrêt de windows le service ne s'arrête pas proprement (et donc n'arrête pas mon periph)
Marsh Posté le 24-10-2007 à 12:34:59
Par defaut, y a un timeout de 20 secondes avant que Windows decide de forcer un service à se fermer.
Essaye de le reduire.
Perso, je met entre 2 et 5 secondes, c'est bien suffisant
C'est dans le registre, au niveau de la valeur WaitToKillServiceTimeout
dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentcontrolSet\Control
Tu la passes à 2000 (pour 2 secondes) ou 5000 (pour 5 secondes)
Tu rebootes et c'est actif a la prochaine session
Marsh Posté le 24-10-2007 à 12:36:34
2 sec c'est bien trop court, il risque d'avoir un plantage a la fermeture, 5 secondes c'est mieux.
Marsh Posté le 24-10-2007 à 13:22:58
ca signifie qu'au bout de ce timeout (2/5sec), windows va arrêter proprement les services (dont le mien) avant de s'arrêter ?
Marsh Posté le 24-10-2007 à 13:29:10
non cette clé fait reference a tous les services, pas au tien particulièrement..... je ne connais pas la réponse a ton pb pour ma part.
Marsh Posté le 24-10-2007 à 17:09:57
Euh oui, c'est ce que je voulais dire..
Bon, je testerai ce soir.
Merki
Marsh Posté le 27-10-2007 à 19:02:16
C'est re moi...
Ca ne fonctionne pas.
Il faut que lorsque j'éteins mon PC, il fasse pareil qu'un "net stop monservice".
Marsh Posté le 06-11-2007 à 19:03:42
Tu peux toujours glisser un script de fermeture de windows dans la gpedit.msc (s'il s'agit d'une version 2000/xp professional bien entendu), indiquant un arrêt de Windows après qu'un net stop tonservice se soit correctement réalisé.
Marsh Posté le 14-01-2008 à 09:00:47
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) ) ;
Marsh Posté le 24-10-2007 à 12:10:09
hello tout le monde,
J'ai bricolé un service windows (qui pilote un périphérique) et tout fonctionne bien :
- quand je démarre le service (net start monservice) le périphérique démarre.
- quand j'arrête mon service (net stop monservice) le périphérique s'arrette.
Bon par contre quand j'arrête l'ordinateur, je pensais que windows arrêtait les services proprement avant de se couper mais il semblerait que ce ne soit pas le cas, du coup mon périphérique reste allumé
Ya pas un moyen de dire a windows de faire son boulot correctement ?