estructura de SERVICE_TRIGGER (winsvc.h)
Representa un evento de desencadenador de servicio. Esta estructura la usa la estructura SERVICE_TRIGGER_INFO .
Sintaxis
typedef struct _SERVICE_TRIGGER {
DWORD dwTriggerType;
DWORD dwAction;
GUID *pTriggerSubtype;
DWORD cDataItems;
PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM pDataItems;
} SERVICE_TRIGGER, *PSERVICE_TRIGGER;
Miembros
dwTriggerType
Tipo de evento de desencadenador. Este miembro puede ser uno de los siguientes valores.
Valor | Significado |
---|---|
|
El evento es un evento personalizado generado por un proveedor de Seguimiento de eventos para Windows (ETW). Este evento de desencadenador se puede usar para iniciar o detener un servicio.
El miembro pTriggerSubtype especifica el GUID del proveedor de eventos. El miembro pDataItems especifica los datos específicos del desencadenador definidos por el proveedor. |
|
El evento se desencadena cuando llega un dispositivo de la clase de interfaz de dispositivo especificada o está presente cuando se inicia el sistema. Este evento de desencadenador se usa normalmente para iniciar un servicio.
El miembro pTriggerSubtype especifica el GUID de clase de interfaz de dispositivo. Estos GUID se definen en archivos de encabezado específicos del dispositivo proporcionados con el Kit de controladores de Windows (WDK). El miembro pDataItems especifica una o varias cadenas de identificador de hardware y identificador compatibles para la clase de interfaz de dispositivo. Las cadenas deben ser Unicode. Si se especifica más de una cadena, el evento se desencadena si alguna de las cadenas coincide. Por ejemplo, el servicio Wpdbusenum se inicia cuando un dispositivo de la clase de interfaz de dispositivo GUID_DEVINTERFACE_DISK {53f56307-b6bf-11d0-94f2-00a0c91efb8b} y una cadena de identificador de hardware de |
|
El evento se desencadena cuando el equipo se une o sale de un dominio. Este evento de desencadenador se puede usar para iniciar o detener un servicio.
El miembro pTriggerSubtype especifica DOMAIN_JOIN_GUID o DOMAIN_LEAVE_GUID. No se usa el miembro pDataItems . |
|
El evento se desencadena cuando se abre un puerto de firewall o aproximadamente 60 segundos después de cerrar el puerto de firewall. Este evento de desencadenador se puede usar para iniciar o detener un servicio.
El miembro pTriggerSubtype especifica FIREWALL_PORT_OPEN_GUID o FIREWALL_PORT_CLOSE_GUID. El miembro pDataItems especifica el puerto, el protocolo y, opcionalmente, la ruta de acceso ejecutable y la información del usuario (cadena o nombre de SID) del servicio que escucha en el evento. El token "RPC" se puede usar en lugar del puerto para especificar cualquier socket de escucha usado por RPC. El token "system" se puede usar en lugar de la ruta de acceso ejecutable para especificar puertos creados por el kernel de Windows y escuchados en él. El evento solo se desencadena si todas las cadenas coinciden. Por ejemplo, si MyService hospedado dentro de MyServiceProcess.exe se iniciará el desencadenador cuando se abra el puerto UDP 5001, los datos específicos del desencadenador serían la representación Unicode de Nota Para poder registrar este evento, se debe detener el servicio Motor de filtrado base (BFE) y todos los servicios que dependen de él. Una vez registrado el evento, se pueden reiniciar el servicio BFE y los servicios que dependen de él. Para obtener más información, vea la sección Comentarios.
|
|
El evento se desencadena cuando se produce un cambio de directiva de equipo o directiva de usuario. Este evento de desencadenador se usa normalmente para iniciar un servicio.
El miembro pTriggerSubtype especifica MACHINE_POLICY_PRESENT_GUID o USER_POLICY_PRESENT_GUID. No se usa el miembro pDataItems . |
|
El evento se desencadena cuando la primera dirección IP de la pila de redes TCP/IP está disponible o la última dirección IP de la pila deja de estar disponible. Este evento de desencadenador se puede usar para iniciar o detener un servicio.
El miembro pTriggerSubtype especifica NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID o NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID. No se usa el miembro pDataItems . |
|
El evento se desencadena cuando llega un paquete o solicitud a un protocolo de red determinado. Esta solicitud se usa normalmente para iniciar un servicio que se ha detenido después de un tiempo de espera de inactividad cuando no hay trabajo que hacer.
Windows 7 y Windows Server 2008 R2: Este tipo de desencadenador no se admite hasta Windows 8 y Windows Server 2012. El miembro pTriggerSubtype especifica uno de los siguientes valores: RPC_INTERFACE_EVENT_GUID o NAMED_PIPE_EVENT_GUID. El miembro pDataItems especifica un GUID de punto de conexión o interfaz. La cadena debe ser Unicode. El evento se desencadena si la cadena es una coincidencia exacta. El miembro dwAction debe ser SERVICE_TRIGGER_ACTION_SERVICE_START. |
dwAction
Acción que se va a realizar cuando se produce el evento de desencadenador especificado. Este miembro puede ser uno de los siguientes valores.
pTriggerSubtype
Apunta a un GUID que identifica el subtipo de evento de desencadenador. El valor de este miembro depende del valor del miembro dwTriggerType .
Si dwTriggerType es SERVICE_TRIGGER_TYPE_CUSTOM, pTriggerSubtype es el GUID que identifica el proveedor de eventos personalizado.
Si dwTriggerType es SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL, pTriggerSubtype es el GUID que identifica la clase de interfaz de dispositivo.
Si dwTriggerType es SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT, pTriggerSubtype es uno de los valores siguientes.
Para otros tipos de eventos de desencadenador, pTriggerSubType puede ser uno de los siguientes valores.
cDataItems
Número de estructuras de SERVICE_TRIGGER_SPECIFIC_DATA_ITEM en la matriz a la que apunta pDataItems.
Este miembro solo es válido si el miembro dwDataType es SERVICE_TRIGGER_TYPE_CUSTOM, SERVICE_TRIGGER_TYPE_DEVICE_ARRIVAL, SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT o SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT.
pDataItems
Puntero a una matriz de estructuras de SERVICE_TRIGGER_SPECIFIC_DATA_ITEM que contienen datos específicos del desencadenador.
Comentarios
En un sistema unido a un dominio, la configuración de directivas de seguridad puede impedir que el servicio BFE y sus servicios dependientes se detengan o que se reinicien automáticamente. En este caso, es necesario deshabilitar los servicios y volver a habilitarlos después de registrar el evento. Para ello mediante programación, almacene el tipo de inicio original de cada servicio, cambie el tipo de inicio del servicio a SERVICE_DISABLED, registre el evento y, a continuación, restaure el tipo de inicio original del servicio. Para obtener información sobre cómo cambiar el tipo de inicio de un servicio, vea ChangeServiceConfig.
Para deshabilitar los servicios mediante la herramienta de línea de comandos SC, use el comando sc config bfe start= deshabilitado para deshabilitar el servicio BFE y sus servicios dependientes, use el comando net stop bfe /Y para detenerlos. Para volver a habilitar los servicios, use el comando sc config bfe start= auto. Para obtener más información sobre la herramienta de línea de comandos SC, consulte Control de un servicio mediante SC.
Si no es posible deshabilitar los servicios, puede ser necesario reiniciar el sistema después de instalar el servicio que registra el evento. En este caso, no deshabilite el servicio BFE y sus servicios dependientes antes de reiniciar el sistema, ya que es posible que el sistema no funcione correctamente si estos servicios permanecen deshabilitados.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 7 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 R2 [solo aplicaciones de escritorio] |
Encabezado | winsvc.h |