SERVICE_TRIGGER-Struktur (winsvc.h)

Stellt ein Diensttriggerereignis dar. Diese Struktur wird von der SERVICE_TRIGGER_INFO-Struktur verwendet.

Syntax

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

Member

dwTriggerType

Der Triggerereignistyp. Dieser Member kann einer der folgenden Werte sein.

Wert Bedeutung
SERVICE_TRIGGER_TYPE_CUSTOM
20
Das Ereignis ist ein benutzerdefiniertes Ereignis, das von einem ETW-Anbieter ( Event Tracing for Windows ) generiert wird. Dieses Triggerereignis kann verwendet werden, um einen Dienst zu starten oder zu beenden.

Das pTriggerSubtype-Element gibt die GUID des Ereignisanbieters an.

Das pDataItems-Element gibt triggerspezifische Daten an, die vom Anbieter definiert werden.

SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL
1
Das Ereignis wird ausgelöst, wenn ein Gerät der angegebenen Geräteschnittstellenklasse eintrifft oder beim Starten des Systems vorhanden ist. Dieses Triggerereignis wird häufig zum Starten eines Diensts verwendet.

Das pTriggerSubtype-Element gibt die GUID der Geräteschnittstellenklasse an. Diese GUIDs werden in gerätespezifischen Headerdateien definiert, die mit dem Windows Driver Kit (WDK) bereitgestellt werden.

Das pDataItems-Element gibt mindestens eine Hardware-ID und kompatible ID-Zeichenfolgen für die Geräteschnittstellenklasse an. Zeichenfolgen müssen Unicode sein. Wenn mehrere Zeichenfolgen angegeben werden, wird das -Ereignis ausgelöst, wenn eine der Zeichenfolgen übereinstimmt. Beispielsweise wird der Wpdbusenum-Dienst gestartet, wenn ein Gerät der Geräteschnittstellenklasse GUID_DEVINTERFACE_DISK {53f56307-b6bf-11d0-94f2-00a0c91efb8b} und eine Hardware-ID-Zeichenfolge von "USBSTOR\GenDisk" eintrifft.

SERVICE_TRIGGER_TYPE_DOMAIN_JOIN
3
Das Ereignis wird ausgelöst, wenn der Computer eine Domäne verknüpft oder verlässt. Dieses Triggerereignis kann verwendet werden, um einen Dienst zu starten oder zu beenden.

Das pTriggerSubtype-Element gibt DOMAIN_JOIN_GUID oder DOMAIN_LEAVE_GUID an.

Das pDataItems-Element wird nicht verwendet.

SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT
4
Das Ereignis wird ausgelöst, wenn ein Firewallport oder etwa 60 Sekunden nach dem Schließen des Firewallports geöffnet wird. Dieses Triggerereignis kann verwendet werden, um einen Dienst zu starten oder zu beenden.

Das pTriggerSubtype-Element gibt FIREWALL_PORT_OPEN_GUID oder FIREWALL_PORT_CLOSE_GUID an.

Das pDataItems-Element gibt den Port, das Protokoll und optional den ausführbaren Pfad und die Benutzerinformationen (SID-Zeichenfolge oder -Name) des Diensts an, der auf das Ereignis lauscht. Das RPC-Token kann anstelle des Ports verwendet werden, um jeden von RPC verwendeten Überwachungssocket anzugeben. Das Systemtoken kann anstelle des ausführbaren Pfads verwendet werden, um Ports anzugeben, die vom Windows-Kernel erstellt und überwacht werden.

Das Ereignis wird nur ausgelöst, wenn alle Zeichenfolgen übereinstimmen. Wenn beispielsweise myService, der in MyServiceProcess.exe gehostet wird, ausgelöst werden soll, wenn Port UDP 5001 geöffnet wird, sind die triggerspezifischen Daten die Unicode-Darstellung von "5001\0UDP\0%programfiles%\MyApplication\MyServiceProcess.exe\0MyService\0\0".

Hinweis Bevor dieses Ereignis registriert werden kann, müssen der BFE-Dienst (Base Filtering Engine) und alle Dienste, die davon abhängen, beendet werden. Nachdem das Ereignis registriert wurde, können der BFE-Dienst und die dienste, die davon abhängig sind, neu gestartet werden. Weitere Informationen finden Sie in den Hinweisen.
 
SERVICE_TRIGGER_TYPE_GROUP_POLICY
5
Das Ereignis wird ausgelöst, wenn eine Änderung der Computer- oder Benutzerrichtlinie erfolgt. Dieses Triggerereignis wird häufig zum Starten eines Diensts verwendet.

Das pTriggerSubtype-Element gibt MACHINE_POLICY_PRESENT_GUID oder USER_POLICY_PRESENT_GUID an.

Das pDataItems-Element wird nicht verwendet.

SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY
2
Das Ereignis wird ausgelöst, wenn die erste IP-Adresse im TCP/IP-Netzwerkstapel verfügbar wird oder die letzte IP-Adresse auf dem Stapel nicht mehr verfügbar ist. Dieses Triggerereignis kann verwendet werden, um einen Dienst zu starten oder zu beenden.

Das pTriggerSubtype-Element gibt NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID oder NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID an.

Das pDataItems-Element wird nicht verwendet.

SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT
6
Das Ereignis wird ausgelöst, wenn ein Paket oder eine Anforderung für ein bestimmtes Netzwerkprotokoll eingeht. Diese Anforderung wird häufig verwendet, um einen Dienst zu starten, der sich selbst nach einem Leerlauftimeout beendet hat, wenn keine Arbeit zu erledigen ist.

Windows 7 und Windows Server 2008 R2: Dieser Triggertyp wird erst unterstützt, wenn Windows 8 und Windows Server 2012.

Das pTriggerSubtype-Element gibt einen der folgenden Werte an: RPC_INTERFACE_EVENT_GUID oder NAMED_PIPE_EVENT_GUID.

Das pDataItems-Element gibt eine Endpunkt- oder Schnittstellen-GUID an. Die Zeichenfolge muss Unicode sein. Das -Ereignis wird ausgelöst, wenn die Zeichenfolge eine exakte Übereinstimmung ist.

Das dwAction-Element muss SERVICE_TRIGGER_ACTION_SERVICE_START sein.

dwAction

Die Aktion, die ausgeführt werden soll, wenn das angegebene Triggerereignis auftritt. Dieser Member kann einer der folgenden Werte sein.

Wert Bedeutung
SERVICE_TRIGGER_ACTION_SERVICE_START
1
Starten Sie den Dienst, wenn das angegebene Triggerereignis auftritt.
SERVICE_TRIGGER_ACTION_SERVICE_STOP
2
Beenden Sie den Dienst, wenn das angegebene Triggerereignis auftritt.

pTriggerSubtype

Zeigt auf eine GUID, die den Untertyp des Triggerereignisses identifiziert. Der Wert dieses Members hängt vom Wert des dwTriggerType-Elements ab.

Wenn dwTriggerType SERVICE_TRIGGER_TYPE_CUSTOM ist, ist pTriggerSubtype die GUID, die den benutzerdefinierten Ereignisanbieter identifiziert.

Wenn dwTriggerType SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL ist, ist pTriggerSubtype die GUID, die die Geräteschnittstellenklasse identifiziert.

Wenn dwTriggerType SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT ist, ist pTriggerSubtype einer der folgenden Werte.

Wert Bedeutung
NAMED_PIPE_EVENT_GUID
1F81D131-3FAC-4537-9E0C-7E7B0C2F4B55
Das Ereignis wird ausgelöst, wenn eine Anforderung zum Öffnen der von pDataItems angegebenen benannten Pipe gestellt wird. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT sein. Das dwAction-Element muss SERVICE_TRIGGER_ACTION_SERVICE_START sein.
RPC_INTERFACE_EVENT_GUID
BC90D167-9470-4139-A9BA-BE0BBBF5B74D
Das Ereignis wird ausgelöst, wenn eine Endpunktauflösungsanforderung für die von pDataItems angegebene RPC-Schnittstellen-GUID eingeht. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT sein. Das dwAction-Element muss SERVICE_TRIGGER_ACTION_SERVICE_START sein.
 

Für andere Triggerereignistypen kann pTriggerSubType einer der folgenden Werte sein.

Wert Bedeutung
DOMAIN_JOIN_GUID
1ce20aba-9851-4421-9430-1ddeb766e809
Das Ereignis wird ausgelöst, wenn der Computer einer Domäne beitritt. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_DOMAIN_JOIN sein.
DOMAIN_LEAVE_GUID
ddaf516e-58c2-4866-9574-c3b615d42ea1
Das Ereignis wird ausgelöst, wenn der Computer eine Domäne verlässt. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_DOMAIN_JOIN sein.
FIREWALL_PORT_OPEN_GUID
b7569e07-8421-4ee0-ad10-86915afdad09
Das Ereignis wird ausgelöst, wenn der angegebene Firewallport geöffnet wird. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT sein.
FIREWALL_PORT_CLOSE_GUID
a144ed38-8e12-4de4-9d96-e64740b1a524
Das Ereignis wird ungefähr 60 Sekunden nach dem Schließen des angegebenen Firewallports ausgelöst. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT sein.
MACHINE_POLICY_PRESENT_GUID
659FCAE6-5BDB-4DA9-B1FF-CA2A178D46E0
Das Ereignis wird ausgelöst, wenn sich die Computerrichtlinie geändert hat. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_GROUP_POLICY sein.
NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID
4f27f2de-14e2-430b-a549-7cd48cbc8245
Das Ereignis wird ausgelöst, wenn die erste IP-Adresse im TCP/IP-Netzwerkstapel verfügbar wird. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY sein.
NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID
cc4ba62a-162e-4648-847a-b6bdf993e335
Das Ereignis wird ausgelöst, wenn die letzte IP-Adresse im TCP/IP-Netzwerkstapel nicht mehr verfügbar ist. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY sein.
USER_POLICY_PRESENT_GUID
54FB46C8-F089-464C-B1FD-59D1B62C3B50
Das Ereignis wird ausgelöst, wenn sich die Benutzerrichtlinie geändert hat. Das dwTriggerType-Element muss SERVICE_TRIGGER_TYPE_GROUP_POLICY sein.

cDataItems

Die Anzahl der SERVICE_TRIGGER_SPECIFIC_DATA_ITEM Strukturen im Array, auf das pDataItems verweist.

Dieser Member ist nur gültig, wenn das dwDataType-Element SERVICE_TRIGGER_TYPE_CUSTOM, SERVICE_TRIGGER_TYPE_DEVICE_ARRIVAL, SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT oder SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT ist.

pDataItems

Ein Zeiger auf ein Array von SERVICE_TRIGGER_SPECIFIC_DATA_ITEM Strukturen, die triggerspezifische Daten enthalten.

Hinweise

Auf einem System, das mit einer Domäne verbunden ist, können Sicherheitsrichtlinieneinstellungen verhindern, dass der BFE-Dienst und seine abhängigen Dienste beendet werden, oder sie werden automatisch neu gestartet. In diesem Fall ist es erforderlich, die Dienste zu deaktivieren und sie dann nach der Registrierung des Ereignisses erneut zu aktivieren. Speichern Sie dazu programmgesteuert den ursprünglichen Starttyp jedes Diensts, ändern Sie den Starttyp des Diensts in SERVICE_DISABLED, registrieren Sie das Ereignis, und stellen Sie dann den ursprünglichen Starttyp des Diensts wieder her. Informationen zum Ändern des Starttyps eines Diensts finden Sie unter ChangeServiceConfig.

Um die Dienste mithilfe des SC-Befehlszeilentools zu deaktivieren, verwenden Sie den Befehl sc config bfe start= disabled , um den BFE-Dienst und seine abhängigen Dienste zu deaktivieren. Verwenden Sie dann den Befehl net stop bfe /Y , um sie zu beenden. Um die Dienste erneut zu aktivieren, verwenden Sie den Befehl sc config bfe start= auto. Weitere Informationen zum SC-Befehlszeilentool finden Sie unter Steuern eines Diensts mithilfe von SC.

Wenn es nicht möglich ist, die Dienste zu deaktivieren, kann es erforderlich sein, das System nach der Installation des Diensts neu zu starten, der das Ereignis registriert. Deaktivieren Sie in diesem Fall den BFE-Dienst und seine abhängigen Dienste nicht vor dem Neustart des Systems, da das System möglicherweise nicht ordnungsgemäß funktioniert, wenn diese Dienste deaktiviert bleiben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Kopfzeile winsvc.h

Weitere Informationen

ChangeServiceConfig2

QueryServiceConfig2

SERVICE_TRIGGER_INFO

SERVICE_TRIGGER_SPECIFIC_DATA_ITEM

Diensttriggerereignisse