次の方法で共有


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
イベントは、 Event Tracing for Windows (ETW) プロバイダーによって生成されるカスタム イベントです。 このトリガー イベントは、サービスを開始または停止するために使用できます。

pTriggerSubtype メンバーは、イベント プロバイダーの GUID を指定します。

pDataItems メンバーは、プロバイダーによって定義されたトリガー固有のデータを指定します。

SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL
1
イベントは、指定されたデバイス インターフェイス クラスのデバイスが到着したときにトリガーされるか、システムの起動時に存在します。 このトリガー イベントは、一般的にサービスを開始するために使用されます。

pTriggerSubtype メンバーは、デバイス インターフェイス クラス GUID を指定します。 これらの GUID は、 Windows Driver Kit (WDK) で提供されるデバイス固有のヘッダー ファイルで定義されています。

pDataItems メンバーは、デバイス インターフェイス クラスの 1 つ以上のハードウェア ID および互換性のある ID 文字列を指定します。 文字列は Unicode である必要があります。 複数の文字列が指定されている場合、いずれかの文字列が一致するとイベントがトリガーされます。 たとえば、Wpdbusenum サービスは、{53f56307-b6bf-11d0-94f2-00a0c91efb8b} のデバイス "USBSTOR\GenDisk" インターフェイス GUID_DEVINTERFACE_DISK クラスのデバイスが到着したときに開始されます。

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"Unicode 表現になります。

メモ このイベントを登録する前に、基本フィルター エンジン (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 を指定します。 文字列は Unicode である必要があります。 このイベントは、文字列が完全に一致する場合にトリガーされます。

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 サービスとその依存サービスを無効にしてから、コマンド ネットストップ bfe /Y を使用してそれらを停止します。 サービスを再度有効にするには、 sc config bfe start= auto コマンドを使用します。SC コマンド ライン ツールの詳細については、「SC を 使用したサービスの制御」を参照してください。

サービスを無効にできない場合は、イベントを登録しているサービスをインストールした後にシステムを再起動する必要がある場合があります。 この場合、システムを再起動する前に BFE サービスとその依存サービスを無効にしないでください。これらのサービスが無効のままの場合は、システムが正しく動作しない可能性があるためです。

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
Header winsvc.h

こちらもご覧ください

ChangeServiceConfig2

QueryServiceConfig2

SERVICE_TRIGGER_INFO

SERVICE_TRIGGER_SPECIFIC_DATA_ITEM

サービス トリガー イベント