structure SERVICE_STATUS (winsvc.h)

Contient status informations pour un service. Les fonctions ControlService, EnumDependentServices, EnumServicesStatus et QueryServiceStatus utilisent cette structure. Un service utilise cette structure dans la fonction SetServiceStatus pour signaler son status actuel au gestionnaire de contrôle de service.

Syntaxe

typedef struct _SERVICE_STATUS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  DWORD dwCheckPoint;
  DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;

Membres

dwServiceType

Type de service. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Le service est un pilote de système de fichiers.
SERVICE_KERNEL_DRIVER
0x00000001
Le service est un pilote de périphérique.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Le service s’exécute dans son propre processus.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Le service partage un processus avec d’autres services.
SERVICE_USER_OWN_PROCESS
0x00000050
Le service s’exécute dans son propre processus sous le compte d’utilisateur connecté.
SERVICE_USER_SHARE_PROCESS
0x00000060
Le service partage un processus avec un ou plusieurs autres services qui s’exécutent sous le compte d’utilisateur connecté.
 

Si le type de service est SERVICE_WIN32_OWN_PROCESS ou SERVICE_WIN32_SHARE_PROCESS, et que le service s’exécute dans le contexte du compte LocalSystem, le type suivant peut également être spécifié.

Valeur Signification
SERVICE_INTERACTIVE_PROCESS
0x00000100
Le service peut interagir avec le bureau.

Pour plus d’informations, consultez Services interactifs.

dwCurrentState

État actuel du service. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
SERVICE_CONTINUE_PENDING
0x00000005
Le service est en attente.
SERVICE_PAUSE_PENDING
0x00000006
La suspension du service est en attente.
SERVICE_PAUSED
0x00000007
Le service est suspendu.
SERVICE_RUNNING
0x00000004
Le service est en cours d'exécution.
SERVICE_START_PENDING
0x00000002
Le service est en cours de démarrage.
SERVICE_STOP_PENDING
0x00000003
Le service est en cours d'arrêt.
SERVICE_STOPPED
0x00000001
Le service n'est pas en cours d'exécution.

dwControlsAccepted

Codes de contrôle que le service accepte et traite dans sa fonction de gestionnaire (voir Handler et HandlerEx). Un processus d’interface utilisateur peut contrôler un service en spécifiant une commande de contrôle dans la fonction ControlService ou ControlServiceEx . Par défaut, tous les services acceptent la valeur SERVICE_CONTROL_INTERROGATE .

Pour accepter la valeur SERVICE_CONTROL_DEVICEEVENT , le service doit s’inscrire pour recevoir des événements d’appareil à l’aide de la fonction RegisterDeviceNotification .

Voici les codes de contrôle.

Code de contrôle Signification
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
Le service est un composant réseau qui peut accepter les modifications apportées à sa liaison sans être arrêté et redémarré.

Ce code de contrôle permet au service de recevoir des notifications SERVICE_CONTROL_NETBINDADD, SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE et SERVICE_CONTROL_NETBINDDISABLE .

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
Le service peut relire ses paramètres de démarrage sans être arrêté et redémarré.

Ce code de contrôle permet au service de recevoir SERVICE_CONTROL_PARAMCHANGE notifications.

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
Le service peut être suspendu et poursuivi.

Ce code de contrôle permet au service de recevoir des notifications SERVICE_CONTROL_PAUSE et SERVICE_CONTROL_CONTINUE .

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
Le service peut effectuer des tâches de pré-arrêt.

Ce code de contrôle permet au service de recevoir SERVICE_CONTROL_PRESHUTDOWN notifications. Notez que ControlService et ControlServiceEx ne peuvent pas envoyer cette notification ; seul le système peut l’envoyer.

Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.

SERVICE_ACCEPT_SHUTDOWN
0x00000004
Le service est averti lorsque l’arrêt du système se produit.

Ce code de contrôle permet au service de recevoir SERVICE_CONTROL_SHUTDOWN notifications. Notez que ControlService et ControlServiceEx ne peuvent pas envoyer cette notification ; seul le système peut l’envoyer.

SERVICE_ACCEPT_STOP
0x00000001
Le service peut être arrêté.

Ce code de contrôle permet au service de recevoir SERVICE_CONTROL_STOP notifications.

 

Ce membre peut également contenir les codes de contrôle étendu suivants, qui sont pris en charge uniquement par HandlerEx. (Notez que ces codes de contrôle ne peuvent pas être envoyés par ControlService ou ControlServiceEx.)

Code de contrôle Signification
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
Le service est averti lorsque le profil matériel de l’ordinateur a changé. Cela permet au système d’envoyer des notifications SERVICE_CONTROL_HARDWAREPROFILECHANGE au service.
SERVICE_ACCEPT_POWEREVENT
0x00000040
Le service est averti lorsque la status d’alimentation de l’ordinateur a changé. Cela permet au système d’envoyer des notifications SERVICE_CONTROL_POWEREVENT au service.
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
Le service est averti lorsque la status de session de l’ordinateur a changé. Cela permet au système d’envoyer des notifications SERVICE_CONTROL_SESSIONCHANGE au service.
SERVICE_ACCEPT_TIMECHANGE
0x00000200
Le service est averti lorsque l’heure système a changé. Cela permet au système d’envoyer SERVICE_CONTROL_TIMECHANGE notifications au service.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Ce code de contrôle n’est pas pris en charge.

SERVICE_ACCEPT_TRIGGEREVENT
0x00000400
Le service est averti lorsqu’un événement pour lequel le service est inscrit se produit. Cela permet au système d’envoyer SERVICE_CONTROL_TRIGGEREVENT notifications au service.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Ce code de contrôle n’est pas pris en charge.

SERVICE_ACCEPT_USERMODEREBOOT
0x00000800
Les services sont avertis lorsque l’utilisateur lance un redémarrage.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Ce code de contrôle n’est pas pris en charge.

dwWin32ExitCode

Code d’erreur utilisé par le service pour signaler une erreur qui se produit lors du démarrage ou de l’arrêt. Pour retourner un code d’erreur spécifique au service, le service doit définir cette valeur sur ERROR_SERVICE_SPECIFIC_ERROR pour indiquer que le membre dwServiceSpecificExitCode contient le code d’erreur. Le service doit définir cette valeur sur NO_ERROR lorsqu’il est en cours d’exécution et en cas d’arrêt normal.

dwServiceSpecificExitCode

Code d’erreur spécifique au service que le service retourne lorsqu’une erreur se produit pendant le démarrage ou l’arrêt du service. Cette valeur est ignorée, sauf si le membre dwWin32ExitCode est défini sur ERROR_SERVICE_SPECIFIC_ERROR.

dwCheckPoint

Valeur case activée point que le service incrémente régulièrement pour signaler sa progression pendant une longue opération de démarrage, d’arrêt, de pause ou de poursuite. Par exemple, le service doit incrémenter cette valeur à mesure qu’il termine chaque étape de son initialisation lors du démarrage. Le programme d’interface utilisateur qui a appelé l’opération sur le service utilise cette valeur pour suivre la progression du service pendant une opération de longue durée. Cette valeur n’est pas valide et doit être égale à zéro lorsque le service n’a pas d’opération de démarrage, d’arrêt, de pause ou de poursuite en attente.

dwWaitHint

Durée estimée requise pour une opération de démarrage, d’arrêt, de pause ou de poursuite en attente, en millisecondes. Avant que la durée spécifiée ne soit écoulée, le service doit effectuer son prochain appel à la fonction SetServiceStatus avec une valeur dwCheckPoint incrémentée ou une modification de dwCurrentState. Si la durée spécifiée par dwWaitHint passe et que dwCheckPoint n’a pas été incrémenté ou que dwCurrentState n’a pas changé, le gestionnaire de contrôle de service ou le programme de contrôle de service peut supposer qu’une erreur s’est produite et que le service doit être arrêté. Toutefois, si le service partage un processus avec d’autres services, le gestionnaire de contrôle de service ne peut pas arrêter l’application de service, car il doit également arrêter les autres services qui partagent le processus.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête winsvc.h (inclure Windows.h)

Voir aussi

ControlService

ControlServiceEx

EnumDependentServices

EnumServicesStatus

QueryServiceStatus

SetServiceStatus