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.
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 |
---|---|
|
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.
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 |
---|---|
|
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 . |
|
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. |
|
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 . |
|
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. |
|
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. |
|
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.)
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) |