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 |
---|---|
|
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. |
|
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 |
|
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. |
|
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 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.
|
|
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. |
|
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. |
|
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.
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.
Für andere Triggerereignistypen kann pTriggerSubType einer der folgenden Werte 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 |