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 |
---|---|
|
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. |
|
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 |
|
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é. |
|
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 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.
|
|
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é. |
|
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é. |
|
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.
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.
Pour les autres types d’événements déclencheurs, pTriggerSubType peut être l’une des valeurs suivantes.
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 |