Demandes de contrôle de service

Pour envoyer des demandes de contrôle à un service en cours d’exécution, un programme de contrôle de service utilise la fonction ControlService . Cette fonction spécifie une valeur de contrôle qui est passée à la fonction HandlerEx du service spécifié. Cette valeur de contrôle peut être un code défini par l’utilisateur ou l’un des codes standard qui permettent au programme appelant d’effectuer les actions suivantes :

  • Arrêter un service (SERVICE_CONTROL_STOP).
  • Suspendre un service (SERVICE_CONTROL_PAUSE).
  • Reprendre l’exécution d’un service suspendu (SERVICE_CONTROL_CONTINUE).
  • Récupérer les informations de status mises à jour à partir d’un service (SERVICE_CONTROL_INTERROGATE).

Chaque service spécifie les valeurs de contrôle qu’il acceptera et traitera. Pour déterminer quelles valeurs de contrôle standard sont acceptées par un service, utilisez la fonction QueryServiceStatusEx ou spécifiez la valeur de contrôle SERVICE_CONTROL_INTERROGATE dans un appel à la fonction ControlService . Le membre dwControlsAccepted de la structure SERVICE_STATUS retournée par ces fonctions indique si le service peut être arrêté, suspendu ou repris. Tous les services acceptent la valeur de contrôle SERVICE_CONTROL_INTERROGATE.

La fonction QueryServiceStatusEx signale les status les plus récents pour un service spécifié, mais n’obtient pas de status mis à jour du service lui-même. L’utilisation de la valeur de contrôle SERVICE_CONTROL_INTERROGATE dans un appel à ControlService garantit que les informations status retournées sont actuelles.

Contrôle d’un service à l’aide de SC