Partager via


SERVICE_TRIGGER structure (winsvc.h)

Représente un événement de déclencheur de service. Cette structure est utilisée par la structure SERVICE_TRIGGER_INFO .

Syntaxe

typedef struct _SERVICE_TRIGGER {
  DWORD                               dwTriggerType;
  DWORD                               dwAction;
  GUID                                *pTriggerSubtype;
  DWORD                               cDataItems;
  PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM pDataItems;
} SERVICE_TRIGGER, *PSERVICE_TRIGGER;

Membres

dwTriggerType

Type d’événement déclencheur. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
SERVICE_TRIGGER_TYPE_CUSTOM
20
L’événement est un événement personnalisé généré par un fournisseur de suivi d’événements pour Windows (ETW). Cet événement déclencheur peut être utilisé pour démarrer ou arrêter un service.

Le membre pTriggerSubtype spécifie le GUID du fournisseur d’événements.

Le membre pDataItems spécifie les données spécifiques au déclencheur définies par le fournisseur.

SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL
1
L’événement est déclenché lorsqu’un appareil de la classe d’interface d’appareil spécifiée arrive ou est présent au démarrage du système. Cet événement déclencheur est couramment utilisé pour démarrer un service.

Le membre pTriggerSubtype spécifie le GUID de la classe d’interface d’appareil. Ces GUID sont définis dans les fichiers d’en-tête spécifiques aux appareils fournis avec le Kit de pilotes Windows (WDK).

Le membre pDataItems spécifie un ou plusieurs ID matériels et des chaînes d’ID compatibles pour la classe d’interface d’appareil. Les chaînes doivent être Unicode. Si plusieurs chaînes sont spécifiées, l’événement est déclenché si l’une des chaînes correspond. Par exemple, le service Wpdbusenum démarre lorsqu’un appareil de la classe d’interface d’appareil GUID_DEVINTERFACE_DISK {53f56307-b6bf-11d0-94f2-00a0c91efb8b} et qu’une chaîne d’ID matériel de "USBSTOR\GenDisk" arrive.

SERVICE_TRIGGER_TYPE_DOMAIN_JOIN
3
L’événement est déclenché lorsque l’ordinateur rejoint ou quitte un domaine. Cet événement déclencheur peut être utilisé pour démarrer ou arrêter un service.

Le membre pTriggerSubtype spécifie DOMAIN_JOIN_GUID ou DOMAIN_LEAVE_GUID.

Le membre pDataItems n’est pas utilisé.

SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT
4
L’événement est déclenché lorsqu’un port de pare-feu est ouvert ou environ 60 secondes après la fermeture du port de pare-feu. Cet événement déclencheur peut être utilisé pour démarrer ou arrêter un service.

Le membre pTriggerSubtype spécifie FIREWALL_PORT_OPEN_GUID ou FIREWALL_PORT_CLOSE_GUID.

Le membre pDataItems spécifie le port, le protocole et éventuellement le chemin d’accès exécutable et les informations utilisateur (chaîne ou nom SID) du service à l’écoute sur l’événement. Le jeton « RPC » peut être utilisé à la place du port pour spécifier n’importe quel socket d’écoute utilisé par RPC. Le jeton « système » peut être utilisé à la place du chemin d’accès exécutable pour spécifier les ports créés par et écoutés par le noyau Windows.

L’événement est déclenché uniquement si toutes les chaînes correspondent. Par exemple, si MyService hébergé dans MyServiceProcess.exe doit être démarré par déclencheur lors de l’ouverture du port UDP 5001, les données spécifiques au déclencheur sont la représentation Unicode de "5001\0UDP\0%programfiles%\MyApplication\MyServiceProcess.exe\0MyService\0\0".

Note Avant que cet événement puisse être inscrit, le service BFE (Base Filtering Engine) et tous les services qui en dépendent doivent être arrêtés. Une fois l’événement inscrit, le service BFE et les services qui en dépendent peuvent être redémarrés. Pour plus d'informations, consultez la section Notes.
 
SERVICE_TRIGGER_TYPE_GROUP_POLICY
5
L’événement est déclenché lorsqu’une modification de stratégie d’ordinateur ou de stratégie utilisateur se produit. Cet événement déclencheur est couramment utilisé pour démarrer un service.

Le membre pTriggerSubtype spécifie MACHINE_POLICY_PRESENT_GUID ou USER_POLICY_PRESENT_GUID.

Le membre pDataItems n’est pas utilisé.

SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY
2
L’événement est déclenché lorsque la première adresse IP de la pile réseau TCP/IP devient disponible ou que la dernière adresse IP de la pile devient indisponible. Cet événement déclencheur peut être utilisé pour démarrer ou arrêter un service.

Le membre pTriggerSubtype spécifie NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID ou NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID.

Le membre pDataItems n’est pas utilisé.

SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT
6
L’événement est déclenché lorsqu’un paquet ou une requête arrive sur un protocole réseau particulier. Cette requête est couramment utilisée pour démarrer un service qui s’est arrêté lui-même après un délai d’inactivité quand il n’y a pas de travail à effectuer.

Windows 7 et Windows Server 2008 R2 : Ce type de déclencheur n’est pas pris en charge tant qu’Windows 8 et Windows Server 2012.

Le membre pTriggerSubtype spécifie l’une des valeurs suivantes : RPC_INTERFACE_EVENT_GUID ou NAMED_PIPE_EVENT_GUID.

Le membre pDataItems spécifie un point de terminaison ou un GUID d’interface. La chaîne doit être Unicode. L’événement se déclenche si la chaîne est une correspondance exacte.

Le membre dwAction doit être SERVICE_TRIGGER_ACTION_SERVICE_START.

dwAction

Action à effectuer lorsque l’événement de déclencheur spécifié se produit. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
SERVICE_TRIGGER_ACTION_SERVICE_START
1
Démarrez le service lorsque l’événement de déclencheur spécifié se produit.
SERVICE_TRIGGER_ACTION_SERVICE_STOP
2
Arrêtez le service lorsque l’événement de déclencheur spécifié se produit.

pTriggerSubtype

Pointe vers un GUID qui identifie le sous-type d’événement déclencheur. La valeur de ce membre dépend de la valeur du membre dwTriggerType .

Si dwTriggerType est SERVICE_TRIGGER_TYPE_CUSTOM, pTriggerSubtype est le GUID qui identifie le fournisseur d’événements personnalisé.

Si dwTriggerType est SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL, pTriggerSubtype est le GUID qui identifie la classe d’interface de périphérique.

Si dwTriggerType est SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT, pTriggerSubtype est l’une des valeurs suivantes.

Valeur Signification
NAMED_PIPE_EVENT_GUID
1F81D131-3FAC-4537-9E0C-7E7B0C2F4B55
L’événement est déclenché lorsqu’une demande est effectuée pour ouvrir le canal nommé spécifié par pDataItems. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT. Le membre dwAction doit être SERVICE_TRIGGER_ACTION_SERVICE_START.
RPC_INTERFACE_EVENT_GUID
BC90D167-9470-4139-A9BA-BE0BBBF5B74D
L’événement est déclenché lorsqu’une demande de résolution de point de terminaison arrive pour le GUID d’interface RPC spécifié par pDataItems. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT. Le membre dwAction doit être SERVICE_TRIGGER_ACTION_SERVICE_START.
 

Pour les autres types d’événements déclencheurs, pTriggerSubType peut être l’une des valeurs suivantes.

Valeur Signification
DOMAIN_JOIN_GUID
1ce20aba-9851-4421-9430-1ddeb766e809
L’événement est déclenché lorsque l’ordinateur rejoint un domaine. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_DOMAIN_JOIN.
DOMAIN_LEAVE_GUID
ddaf516e-58c2-4866-9574-c3b615d42ea1
L’événement est déclenché lorsque l’ordinateur quitte un domaine. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_DOMAIN_JOIN.
FIREWALL_PORT_OPEN_GUID
b7569e07-8421-4ee0-ad10-86915afdad09
L’événement est déclenché lorsque le port de pare-feu spécifié est ouvert. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT.
FIREWALL_PORT_CLOSE_GUID
a144ed38-8e12-4de4-9d96-e64740b1a524
L’événement est déclenché environ 60 secondes après la fermeture du port de pare-feu spécifié. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT.
MACHINE_POLICY_PRESENT_GUID
659FCAE6-5BDB-4DA9-B1FF-CA2A178D46E0
L’événement est déclenché lorsque la stratégie de machine a changé. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_GROUP_POLICY.
NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID
4f27f2de-14e2-430b-a549-7cd48cbc8245
L’événement est déclenché lorsque la première adresse IP de la pile réseau TCP/IP devient disponible. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY.
NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID
cc4ba62a-162e-4648-847a-b6bdf993e335
L’événement est déclenché lorsque la dernière adresse IP de la pile réseau TCP/IP devient indisponible. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY.
USER_POLICY_PRESENT_GUID
54FB46C8-F089-464C-B1FD-59D1B62C3B50
L’événement est déclenché lorsque la stratégie utilisateur a changé. Le membre dwTriggerType doit être SERVICE_TRIGGER_TYPE_GROUP_POLICY.

cDataItems

Nombre de structures SERVICE_TRIGGER_SPECIFIC_DATA_ITEM dans le tableau pointé par pDataItems.

Ce membre est valide uniquement si le membre dwDataType est SERVICE_TRIGGER_TYPE_CUSTOM, SERVICE_TRIGGER_TYPE_DEVICE_ARRIVAL, SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT ou SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT.

pDataItems

Pointeur vers un tableau de structures SERVICE_TRIGGER_SPECIFIC_DATA_ITEM qui contiennent des données spécifiques au déclencheur.

Remarques

Sur un système joint à un domaine, les paramètres de stratégie de sécurité peuvent empêcher l’arrêt du service BFE et de ses services dépendants ou les faire redémarrer automatiquement. Dans ce cas, il est nécessaire de désactiver les services, puis de les réactiver une fois l’événement inscrit. Pour ce faire par programmation, stockez le type de démarrage d’origine de chaque service, modifiez le type de démarrage du service en SERVICE_DISABLED, inscrivez l’événement, puis restaurez le type de démarrage d’origine du service. Pour plus d’informations sur la modification du type de démarrage d’un service, consultez ChangeServiceConfig.

Pour désactiver les services à l’aide de l’outil en ligne de commande SC, utilisez la commande sc config bfe start= disabled pour désactiver le service BFE et ses services dépendants, puis utilisez la commande net stop bfe /Y pour les arrêter. Pour réactiver les services, utilisez la commande sc config bfe start= auto. Pour plus d’informations sur l’outil en ligne de commande SC, consultez Contrôle d’un service à l’aide de SC.

S’il n’est pas possible de désactiver les services, il peut être nécessaire de redémarrer le système après avoir installé le service qui inscrit l’événement. Dans ce cas, ne désactivez pas le service BFE et ses services dépendants avant de redémarrer le système, car le système risque de ne pas fonctionner correctement si ces services restent désactivés.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
En-tête winsvc.h

Voir aussi

ChangeServiceConfig2

QueryServiceConfig2

SERVICE_TRIGGER_INFO

SERVICE_TRIGGER_SPECIFIC_DATA_ITEM

Événements de déclencheur de service