структура SERVICE_TRIGGER (winsvc.h)
Представляет событие триггера службы. Эта структура используется структурой SERVICE_TRIGGER_INFO .
Синтаксис
typedef struct _SERVICE_TRIGGER {
DWORD dwTriggerType;
DWORD dwAction;
GUID *pTriggerSubtype;
DWORD cDataItems;
PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM pDataItems;
} SERVICE_TRIGGER, *PSERVICE_TRIGGER;
Члены
dwTriggerType
Тип события триггера. Этот элемент может быть одним из следующих значений.
Значение | Значение |
---|---|
|
Событие является пользовательским событием, созданным поставщиком трассировки событий Windows (ETW). Это событие триггера можно использовать для запуска или остановки службы.
Член pTriggerSubtype указывает GUID поставщика событий. Член pDataItems указывает данные, относящиеся к триггеру, определенные поставщиком. |
|
Событие активируется при поступлении устройства указанного класса интерфейса устройства или при запуске системы. Это событие триггера обычно используется для запуска службы.
Член pTriggerSubtype указывает GUID класса интерфейса устройства. Эти идентификаторы GUID определяются в файлах заголовков для конкретного устройства, которые предоставляются вместе с пакетом драйверов Windows (WDK). Элемент pDataItems указывает один или несколько идентификаторов оборудования и совместимые строки идентификатора для класса интерфейса устройства. Строки должны быть в Юникоде. Если указано несколько строк, событие активируется, если какая-либо из строк совпадает. Например, служба Wpdbusenum запускается при поступлении устройства класса интерфейса устройства GUID_DEVINTERFACE_DISK {53f56307-b6bf-11d0-94f2-00a0c91efb8b} и строки идентификатора |
|
Событие активируется, когда компьютер присоединяется к домену или покидает его. Это событие триггера можно использовать для запуска или остановки службы.
Элемент pTriggerSubtype указывает DOMAIN_JOIN_GUID или DOMAIN_LEAVE_GUID. Элемент pDataItems не используется. |
|
Событие активируется при открытии порта брандмауэра или примерно через 60 секунд после закрытия порта брандмауэра. Это событие триггера можно использовать для запуска или остановки службы.
Элемент pTriggerSubtype указывает FIREWALL_PORT_OPEN_GUID или FIREWALL_PORT_CLOSE_GUID. Член pDataItems указывает порт, протокол и при необходимости путь к исполняемому файлу и сведения о пользователе (строка идентификатора безопасности или имя) службы, прослушивающей событие. Маркер RPC можно использовать вместо порта, чтобы указать любой сокет прослушивания, используемый RPC. Вместо пути к исполняемому файлу можно использовать системный токен, чтобы указать порты, созданные ядром Windows и прослушиваемые им. Событие активируется, только если все строки совпадают. Например, если Служба MyService, размещенная в MyServiceProcess.exe должна запускаться триггером при открытии порта UDP 5001, данные триггера будут представлять собой представление в Юникоде Примечание Прежде чем это событие можно будет зарегистрировать, необходимо остановить службу базовой подсистемы фильтрации (BFE) и все зависящие от нее службы. После регистрации события можно перезапустить службу BFE и зависящие от нее службы. Дополнительные сведения см. в подразделе "Примечания".
|
|
Событие активируется при изменении политики компьютера или политики пользователя. Это событие триггера обычно используется для запуска службы.
Элемент pTriggerSubtype указывает MACHINE_POLICY_PRESENT_GUID или USER_POLICY_PRESENT_GUID. Элемент pDataItems не используется. |
|
Событие активируется, когда первый IP-адрес в сетевом стеке TCP/IP становится доступным или последний IP-адрес в стеке становится недоступным. Это событие триггера можно использовать для запуска или остановки службы.
Элемент pTriggerSubtype указывает NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID или NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID. Элемент pDataItems не используется. |
|
Событие активируется при поступлении пакета или запроса по определенному сетевому протоколу. Этот запрос обычно используется для запуска службы, которая остановилась после истечения времени ожидания простоя, когда нет никаких действий.
Windows 7 и Windows Server 2008 R2: Этот тип триггера не поддерживается до Windows 8 и Windows Server 2012. Элемент pTriggerSubtype указывает одно из следующих значений: RPC_INTERFACE_EVENT_GUID или NAMED_PIPE_EVENT_GUID. Член pDataItems указывает GUID конечной точки или интерфейса. Строка должна быть в Юникоде. Событие активируется, если строка является точным совпадением. Член dwAction должен быть SERVICE_TRIGGER_ACTION_SERVICE_START. |
dwAction
Действие, выполняемое при возникновении указанного события триггера. Этот элемент может быть одним из следующих значений.
pTriggerSubtype
Указывает на GUID, который идентифицирует подтип события триггера. Значение этого элемента зависит от значения элемента dwTriggerType .
Если параметр dwTriggerType имеет значение SERVICE_TRIGGER_TYPE_CUSTOM, pTriggerSubtype — это GUID, идентифицирующий настраиваемый поставщик событий.
Если параметр dwTriggerType имеет SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL, pTriggerSubtype — это GUID, идентифицирующий класс интерфейса устройства.
Если параметр dwTriggerType имеет значение SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT, pTriggerSubtype является одним из следующих значений.
Для других типов событий триггера pTriggerSubType может иметь одно из следующих значений.
cDataItems
Количество SERVICE_TRIGGER_SPECIFIC_DATA_ITEM структур в массиве, на которые указывает pDataItems.
Этот элемент действителен, только если элемент dwDataType является SERVICE_TRIGGER_TYPE_CUSTOM, SERVICE_TRIGGER_TYPE_DEVICE_ARRIVAL, SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT или SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT.
pDataItems
Указатель на массив SERVICE_TRIGGER_SPECIFIC_DATA_ITEM структур, содержащих данные, относящиеся к триггеру.
Комментарии
В системе, присоединенной к домену, параметры политики безопасности могут препятствовать остановке службы BFE и зависимых от нее служб или их автоматическому перезапуску. В этом случае необходимо отключить службы, а затем снова включить их после регистрации события. Чтобы сделать это программным способом, сохраните исходный тип запуска каждой службы, измените тип запуска службы на SERVICE_DISABLED, зарегистрируйте событие, а затем восстановите исходный тип запуска службы. Сведения об изменении типа запуска службы см. в разделе ChangeServiceConfig.
Чтобы отключить службы с помощью программы командной строки SC, используйте команду sc config bfe start= disabled , чтобы отключить службу BFE и ее зависимые службы, а затем используйте команду net stop bfe /Y , чтобы остановить их. Чтобы повторно включить службы, используйте команду sc config bfe start= auto. Дополнительные сведения о программе командной строки SC см. в разделе Управление службой с помощью SC.
Если отключить службы невозможно, может потребоваться перезапустить систему после установки службы, которая регистрирует событие. В этом случае не отключайте службу BFE и ее зависимые службы перед перезапуском системы, так как система может работать неправильно, если эти службы остаются отключенными.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Верхняя часть | winsvc.h |