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
トリガー イベントの種類。 このメンバーには、次のいずれかの値を指定できます。
値 | 意味 |
---|---|
|
イベントは、 Event Tracing for Windows (ETW) プロバイダーによって生成されるカスタム イベントです。 このトリガー イベントは、サービスを開始または停止するために使用できます。
pTriggerSubtype メンバーは、イベント プロバイダーの GUID を指定します。 pDataItems メンバーは、プロバイダーによって定義されたトリガー固有のデータを指定します。 |
|
イベントは、指定されたデバイス インターフェイス クラスのデバイスが到着したときにトリガーされるか、システムの起動時に存在します。 このトリガー イベントは、一般的にサービスを開始するために使用されます。
pTriggerSubtype メンバーは、デバイス インターフェイス クラス GUID を指定します。 これらの GUID は、 Windows Driver Kit (WDK) で提供されるデバイス固有のヘッダー ファイルで定義されています。 pDataItems メンバーは、デバイス インターフェイス クラスの 1 つ以上のハードウェア ID および互換性のある ID 文字列を指定します。 文字列は Unicode である必要があります。 複数の文字列が指定されている場合、いずれかの文字列が一致するとイベントがトリガーされます。 たとえば、Wpdbusenum サービスは、{53f56307-b6bf-11d0-94f2-00a0c91efb8b} のデバイス |
|
イベントは、コンピューターがドメインに参加またはドメインを離れるとトリガーされます。 このトリガー イベントは、サービスを開始または停止するために使用できます。
pTriggerSubtype メンバーは、DOMAIN_JOIN_GUIDまたはDOMAIN_LEAVE_GUIDを指定します。 pDataItems メンバーは使用されません。 |
|
このイベントは、ファイアウォール ポートが開かれるか、ファイアウォール ポートが閉じられた約 60 秒後にトリガーされます。 このトリガー イベントは、サービスを開始または停止するために使用できます。
pTriggerSubtype メンバーは、FIREWALL_PORT_OPEN_GUIDまたはFIREWALL_PORT_CLOSE_GUIDを指定します。 pDataItems メンバーは、ポート、プロトコル、および必要に応じて、イベントをリッスンしているサービスの実行可能パスとユーザー情報 (SID 文字列または名前) を指定します。 ポートの代わりに "RPC" トークンを使用して、RPC で使用されるリッスン ソケットを指定できます。 実行可能パスの代わりに "システム" トークンを使用して、Windows カーネルによって作成され、リッスンされるポートを指定できます。 イベントは、すべての文字列が一致する場合にのみトリガーされます。 たとえば、ポート UDP 5001 が開いたときに MyServiceProcess.exe 内でホストされている MyService をトリガー開始する場合、トリガー固有のデータは の メモ このイベントを登録する前に、基本フィルター エンジン (BFE) サービスと、それに依存するすべてのサービスを停止する必要があります。 イベントが登録されると、それに依存する BFE サービスとサービスを再起動できます。 詳細については、「解説」を参照してください。
|
|
このイベントは、マシン ポリシーまたはユーザー ポリシーの変更が発生したときにトリガーされます。 このトリガー イベントは、一般的にサービスを開始するために使用されます。
pTriggerSubtype メンバーは、MACHINE_POLICY_PRESENT_GUIDまたはUSER_POLICY_PRESENT_GUIDを指定します。 pDataItems メンバーは使用されません。 |
|
イベントは、TCP/IP ネットワーク スタックの最初の 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 を指定します。 文字列は Unicode である必要があります。 このイベントは、文字列が完全に一致する場合にトリガーされます。 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
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 |