estrutura SERVICE_TRIGGER (winsvc.h)
Representa um evento de gatilho de serviço. Essa estrutura é usada pela estrutura SERVICE_TRIGGER_INFO .
Sintaxe
typedef struct _SERVICE_TRIGGER {
DWORD dwTriggerType;
DWORD dwAction;
GUID *pTriggerSubtype;
DWORD cDataItems;
PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM pDataItems;
} SERVICE_TRIGGER, *PSERVICE_TRIGGER;
Membros
dwTriggerType
O tipo de evento de gatilho. Esse membro pode ser um dos valores a seguir.
Valor | Significado |
---|---|
|
O evento é um evento personalizado gerado por um provedor ETW ( Rastreamento de Eventos para Windows ). Esse evento de gatilho pode ser usado para iniciar ou parar um serviço.
O membro pTriggerSubtype especifica o GUID do provedor de eventos. O membro pDataItems especifica dados específicos do gatilho definidos pelo provedor. |
|
O evento é disparado quando um dispositivo da classe de interface de dispositivo especificada chega ou está presente quando o sistema é iniciado. Esse evento de gatilho geralmente é usado para iniciar um serviço.
O membro pTriggerSubtype especifica o GUID da classe de interface do dispositivo. Esses GUIDs são definidos em arquivos de cabeçalho específicos do dispositivo fornecidos com o WDK ( Kit de Driver do Windows ). O membro pDataItems especifica uma ou mais IDs de hardware e cadeias de caracteres de ID compatíveis para a classe de interface do dispositivo. As cadeias de caracteres devem ser Unicode. Se mais de uma cadeia de caracteres for especificada, o evento será disparado se qualquer uma das cadeias de caracteres corresponder. Por exemplo, o serviço Wpdbusenum é iniciado quando um dispositivo da classe de interface do dispositivo GUID_DEVINTERFACE_DISK {53f56307-b6bf-11d0-94f2-00a0c91efb8b} e uma cadeia de caracteres de ID de hardware de |
|
O evento é disparado quando o computador ingressa ou sai de um domínio. Esse evento de gatilho pode ser usado para iniciar ou parar um serviço.
O membro pTriggerSubtype especifica DOMAIN_JOIN_GUID ou DOMAIN_LEAVE_GUID. O membro pDataItems não é usado. |
|
O evento é disparado quando uma porta de firewall é aberta ou aproximadamente 60 segundos após o fechamento da porta do firewall. Esse evento de gatilho pode ser usado para iniciar ou parar um serviço.
O membro pTriggerSubtype especifica FIREWALL_PORT_OPEN_GUID ou FIREWALL_PORT_CLOSE_GUID. O membro pDataItems especifica a porta, o protocolo e, opcionalmente, o caminho executável e as informações do usuário (nome ou cadeia de caracteres SID) do serviço que escuta no evento. O token "RPC" pode ser usado no lugar da porta para especificar qualquer soquete de escuta usado pelo RPC. O token "system" pode ser usado no lugar do caminho executável para especificar portas criadas por e escutadas pelo kernel do Windows. O evento será disparado somente se todas as cadeias de caracteres corresponderem. Por exemplo, se MyService hospedado dentro de MyServiceProcess.exe for iniciado pelo gatilho quando a porta UDP 5001 for aberta, os dados específicos do gatilho serão a representação Unicode de Nota Antes que esse evento possa ser registrado, o serviço BFE (Mecanismo de Filtragem Base) e todos os serviços que dependem dele devem ser interrompidos. Depois que o evento for registrado, o serviço BFE e os serviços que dependem dele poderão ser reiniciados. Para obter mais informações, consulte Comentários.
|
|
O evento é disparado quando ocorre uma alteração de política de computador ou política de usuário. Esse evento de gatilho geralmente é usado para iniciar um serviço.
O membro pTriggerSubtype especifica MACHINE_POLICY_PRESENT_GUID ou USER_POLICY_PRESENT_GUID. O membro pDataItems não é usado. |
|
O evento é disparado quando o primeiro endereço IP na pilha de rede TCP/IP fica disponível ou o último endereço IP na pilha fica indisponível. Esse evento de gatilho pode ser usado para iniciar ou parar um serviço.
O membro pTriggerSubtype especifica NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID ou NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID. O membro pDataItems não é usado. |
|
O evento é disparado quando um pacote ou solicitação chega em um protocolo de rede específico. Essa solicitação geralmente é usada para iniciar um serviço que parou após um tempo limite ocioso quando não há trabalho a ser feito.
Windows 7 e Windows Server 2008 R2: Esse tipo de gatilho não tem suporte até Windows 8 e Windows Server 2012. O membro pTriggerSubtype especifica um dos seguintes valores: RPC_INTERFACE_EVENT_GUID ou NAMED_PIPE_EVENT_GUID. O membro pDataItems especifica um GUID de ponto de extremidade ou interface. A cadeia de caracteres deve ser Unicode. O evento disparará se a cadeia de caracteres for uma correspondência exata. O membro dwAction deve ser SERVICE_TRIGGER_ACTION_SERVICE_START. |
dwAction
A ação a ser tomada quando o evento de gatilho especificado ocorrer. Esse membro pode ser um dos valores a seguir.
pTriggerSubtype
Aponta para um GUID que identifica o subtipo de evento de gatilho. O valor desse membro depende do valor do membro dwTriggerType .
Se dwTriggerType for SERVICE_TRIGGER_TYPE_CUSTOM, pTriggerSubtype será o GUID que identifica o provedor de eventos personalizado.
Se dwTriggerType for SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL, pTriggerSubtype será o GUID que identifica a classe de interface do dispositivo.
Se dwTriggerType for SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT, pTriggerSubtype será um dos valores a seguir.
Para outros tipos de evento de gatilho, pTriggerSubType pode ser um dos valores a seguir.
cDataItems
O número de estruturas SERVICE_TRIGGER_SPECIFIC_DATA_ITEM na matriz apontada por pDataItems.
Esse membro só será válido se o membro dwDataType for SERVICE_TRIGGER_TYPE_CUSTOM, SERVICE_TRIGGER_TYPE_DEVICE_ARRIVAL, SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT ou SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT.
pDataItems
Um ponteiro para uma matriz de estruturas SERVICE_TRIGGER_SPECIFIC_DATA_ITEM que contêm dados específicos do gatilho.
Comentários
Em um sistema ingressado em um domínio, as configurações de política de segurança podem impedir que o serviço BFE e seus serviços dependentes sejam interrompidos ou fazer com que eles sejam reiniciados automaticamente. Nesse caso, é necessário desabilitar os serviços e habilitá-los novamente depois que o evento for registrado. Para fazer isso programaticamente, armazene o tipo de início original de cada serviço, altere o tipo de início do serviço para SERVICE_DISABLED, registre o evento e restaure o tipo inicial original do serviço. Para obter informações sobre como alterar o tipo de início de um serviço, consulte ChangeServiceConfig.
Para desabilitar os serviços usando a ferramenta de linha de comando SC, use o comando sc config bfe start= desabilitado para desabilitar o serviço BFE e seus serviços dependentes e, em seguida, use o comando net stop bfe /Y para interrompê-los. Para reabilitar os serviços, use o comando sc config bfe start= auto. Para obter mais informações sobre a ferramenta de linha de comando sc, consulte Controlando um serviço usando SC.
Se não for possível desabilitar os serviços, talvez seja necessário reiniciar o sistema depois de instalar o serviço que está registrando o evento. Nesse caso, não desabilite o serviço BFE e seus serviços dependentes antes de reiniciar o sistema, pois o sistema poderá não funcionar corretamente se esses serviços permanecerem desabilitados.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Cabeçalho | winsvc.h |