Partager via


structure SERVICE_STATUS_PROCESS (winsvc.h)

Contient des informations status processus pour un service. Les fonctions ControlServiceEx, EnumServicesStatusEx, NotifyServiceStatusChange et QueryServiceStatusEx utilisent cette structure.

Syntaxe

typedef struct _SERVICE_STATUS_PROCESS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  DWORD dwCheckPoint;
  DWORD dwWaitHint;
  DWORD dwProcessId;
  DWORD dwServiceFlags;
} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;

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.
 

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
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 sur le point de continuer.
SERVICE_PAUSE_PENDING
0x00000006
Le service est en pause.
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 s’est arrêté.

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 .

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 SERVICE_CONTROL_POWEREVENT notifications au service.
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
Le service est averti lorsque le status de session de l’ordinateur a changé. Cela permet au système d’envoyer SERVICE_CONTROL_SESSIONCHANGE notifications au service.

dwWin32ExitCode

Code d’erreur utilisé par le service pour signaler une erreur qui se produit au démarrage ou à 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 lorsqu’il se termine normalement.

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 de point case activée que le service incrémente régulièrement pour signaler sa progression au cours d’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 au 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 nécessaire pour une opération de démarrage, d’arrêt, de pause ou de poursuite en attente, en millisecondes. Avant l’expiration du temps spécifié, 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 si 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.

dwProcessId

Identificateur de processus du service.

dwServiceFlags

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

Valeur Signification
0
Le service s’exécute dans un processus qui n’est pas un processus système ou qui n’est pas en cours d’exécution.

Si le service s’exécute dans un processus qui n’est pas un processus système, dwProcessId est différent de zéro. Si le service n’est pas en cours d’exécution, dwProcessId est égal à zéro.

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
Le service s’exécute dans un processus système qui doit toujours être en cours d’exécution.

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

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx