다음을 통해 공유


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

트리거 이벤트 유형입니다. 이 멤버는 다음 값 중 하나일 수 있습니다.

의미
SERVICE_TRIGGER_TYPE_CUSTOM
20
이벤트는 ETW( Windows용 이벤트 추적 ) 공급자가 생성한 사용자 지정 이벤트입니다. 이 트리거 이벤트를 사용하여 서비스를 시작하거나 중지할 수 있습니다.

pTriggerSubtype 멤버는 이벤트 공급자의 GUID를 지정합니다.

pDataItems 멤버는 공급자가 정의한 트리거별 데이터를 지정합니다.

SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL
1
지정된 디바이스 인터페이스 클래스의 디바이스가 도착하거나 시스템이 시작될 때 이벤트가 트리거됩니다. 이 트리거 이벤트는 일반적으로 서비스를 시작하는 데 사용됩니다.

pTriggerSubtype 멤버는 디바이스 인터페이스 클래스 GUID를 지정합니다. 이러한 GUID는 WDK( Windows 드라이버 키트 )와 함께 제공되는 디바이스별 헤더 파일에 정의됩니다.

pDataItems 멤버는 디바이스 인터페이스 클래스에 대해 하나 이상의 하드웨어 ID 및 호환 ID 문자열을 지정합니다. 문자열은 유니코드여야 합니다. 둘 이상의 문자열을 지정하면 문자열 중 하나가 일치하는 경우 이벤트가 트리거됩니다. 예를 들어 Wpdbusenum 서비스는 디바이스 인터페이스 클래스의 디바이스 GUID_DEVINTERFACE_DISK가 {53f56307-b6bf-11d0-94f2-00a0c91efb8b}에 도착하고 의 하드웨어 ID 문자열 "USBSTOR\GenDisk" 이 도착할 때 시작됩니다.

SERVICE_TRIGGER_TYPE_DOMAIN_JOIN
3
이 이벤트는 컴퓨터가 도메인에 가입하거나 도메인을 떠날 때 트리거됩니다. 이 트리거 이벤트를 사용하여 서비스를 시작하거나 중지할 수 있습니다.

pTriggerSubtype 멤버는 DOMAIN_JOIN_GUID 또는 DOMAIN_LEAVE_GUID 지정합니다.

pDataItems 멤버는 사용되지 않습니다.

SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT
4
이 이벤트는 방화벽 포트가 열릴 때 또는 방화벽 포트가 닫힌 후 약 60초 후에 트리거됩니다. 이 트리거 이벤트를 사용하여 서비스를 시작하거나 중지할 수 있습니다.

pTriggerSubtype 멤버는 FIREWALL_PORT_OPEN_GUID 또는 FIREWALL_PORT_CLOSE_GUID 지정합니다.

pDataItems 멤버는 포트, 프로토콜 및 필요에 따라 이벤트에서 수신 대기하는 서비스의 실행 경로 및 사용자 정보(SID 문자열 또는 이름)를 지정합니다. 포트 대신 "RPC" 토큰을 사용하여 RPC에서 사용하는 수신 대기 소켓을 지정할 수 있습니다. 실행 경로 대신 "시스템" 토큰을 사용하여 Windows 커널에서 만들고 수신 대기하는 포트를 지정할 수 있습니다.

이벤트는 모든 문자열이 일치하는 경우에만 트리거됩니다. 예를 들어 포트 UDP 5001이 열릴 때 MyServiceProcess.exe 내에서 호스트되는 MyService가 트리거를 시작하는 경우 트리거별 데이터는 의 "5001\0UDP\0%programfiles%\MyApplication\MyServiceProcess.exe\0MyService\0\0"유니코드 표현입니다.

참고 이 이벤트를 등록하려면 먼저 BFE(기본 필터링 엔진) 서비스와 종속된 모든 서비스를 중지해야 합니다. 이벤트가 등록되면 종속된 BFE 서비스 및 서비스를 다시 시작할 수 있습니다. 자세한 내용은 설명 부분을 참조하세요.
 
SERVICE_TRIGGER_TYPE_GROUP_POLICY
5
이 이벤트는 컴퓨터 정책 또는 사용자 정책 변경이 발생할 때 트리거됩니다. 이 트리거 이벤트는 일반적으로 서비스를 시작하는 데 사용됩니다.

pTriggerSubtype 멤버는 MACHINE_POLICY_PRESENT_GUID 또는 USER_POLICY_PRESENT_GUID 지정합니다.

pDataItems 멤버는 사용되지 않습니다.

SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY
2
TCP/IP 네트워킹 스택의 첫 번째 IP 주소를 사용할 수 있게 되거나 스택의 마지막 IP 주소를 사용할 수 없게 되면 이벤트가 트리거됩니다. 이 트리거 이벤트를 사용하여 서비스를 시작하거나 중지할 수 있습니다.

pTriggerSubtype 멤버는 NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID 또는 NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID 지정합니다.

pDataItems 멤버는 사용되지 않습니다.

SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT
6
패킷 또는 요청이 특정 네트워크 프로토콜에 도착하면 이벤트가 트리거됩니다. 이 요청은 일반적으로 수행할 작업이 없을 때 유휴 시간 제한 후에 중지된 서비스를 시작하는 데 사용됩니다.

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

지정된 트리거 이벤트가 발생할 때 수행할 작업입니다. 이 멤버는 다음 값 중 하나일 수 있습니다.

의미
SERVICE_TRIGGER_ACTION_SERVICE_START
1
지정된 트리거 이벤트가 발생할 때 서비스를 시작합니다.
SERVICE_TRIGGER_ACTION_SERVICE_STOP
2
지정된 트리거 이벤트가 발생할 때 서비스를 중지합니다.

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은 다음 값 중 하나입니다.

의미
NAMED_PIPE_EVENT_GUID
1F81D131-3FAC-4537-9E0C-7E7B0C2F4B55
이벤트는 pDataItems로 지정된 명명된 파이프를 열려는 요청을 할 때 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 합니다. dwAction 멤버는 SERVICE_TRIGGER_ACTION_SERVICE_START 합니다.
RPC_INTERFACE_EVENT_GUID
BC90D167-9470-4139-A9BA-BE0BBBF5B74D
이벤트는 pDataItems로 지정된 RPC 인터페이스 GUID에 대한 엔드포인트 확인 요청이 도착할 때 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 합니다. dwAction 멤버는 SERVICE_TRIGGER_ACTION_SERVICE_START 합니다.
 

다른 트리거 이벤트 형식의 경우 pTriggerSubType 은 다음 값 중 하나일 수 있습니다.

의미
DOMAIN_JOIN_GUID
1ce20aba-9851-4421-9430-1ddeb766e809
이 이벤트는 컴퓨터가 도메인에 가입할 때 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 합니다.
DOMAIN_LEAVE_GUID
ddaf516e-58c2-4866-9574-c3b615d42ea1
컴퓨터가 도메인을 떠날 때 이벤트가 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 합니다.
FIREWALL_PORT_OPEN_GUID
b7569e07-8421-4ee0-ad10-86915afdad09
지정된 방화벽 포트가 열릴 때 이벤트가 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 합니다.
FIREWALL_PORT_CLOSE_GUID
a144ed38-8e12-4de4-9d96-e64740b1a524
지정된 방화벽 포트가 닫힌 후 약 60초 후에 이벤트가 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 합니다.
MACHINE_POLICY_PRESENT_GUID
659FCAE6-5BDB-4DA9-B1FF-CA2A178D46E0
이 이벤트는 컴퓨터 정책이 변경될 때 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_GROUP_POLICY 합니다.
NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID
4f27f2de-14e2-430b-a549-7cd48cbc8245
TCP/IP 네트워킹 스택의 첫 번째 IP 주소를 사용할 수 있게 되면 이벤트가 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 합니다.
NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID
cc4ba62a-162e-4648-847a-b6bdf993e335
TCP/IP 네트워킹 스택의 마지막 IP 주소를 사용할 수 없게 되면 이벤트가 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 합니다.
USER_POLICY_PRESENT_GUID
54FB46C8-F089-464C-B1FD-59D1B62C3B50
이 이벤트는 사용자 정책이 변경될 때 트리거됩니다. dwTriggerType 멤버는 SERVICE_TRIGGER_TYPE_GROUP_POLICY 합니다.

cDataItems

pDataItems가 가리키는 배열의 SERVICE_TRIGGER_SPECIFIC_DATA_ITEM 구조체 수입니다.

이 멤버는 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

추가 정보

ChangeServiceConfig2

QueryServiceConfig2

SERVICE_TRIGGER_INFO

SERVICE_TRIGGER_SPECIFIC_DATA_ITEM

서비스 트리거 이벤트