Bagikan melalui


struktur SERVICE_TRIGGER (winsvc.h)

Mewakili peristiwa pemicu layanan. Struktur ini digunakan oleh struktur SERVICE_TRIGGER_INFO .

Sintaks

typedef struct _SERVICE_TRIGGER {
  DWORD                               dwTriggerType;
  DWORD                               dwAction;
  GUID                                *pTriggerSubtype;
  DWORD                               cDataItems;
  PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM pDataItems;
} SERVICE_TRIGGER, *PSERVICE_TRIGGER;

Anggota

dwTriggerType

Jenis peristiwa pemicu. Anggota ini bisa menjadi salah satu nilai berikut.

Nilai Makna
SERVICE_TRIGGER_TYPE_CUSTOM
20
Peristiwa ini adalah peristiwa kustom yang dihasilkan oleh penyedia Pelacakan Peristiwa untuk Windows (ETW). Kejadian pemicu ini dapat digunakan untuk memulai atau menghentikan layanan.

Anggota pTriggerSubtype menentukan GUID penyedia peristiwa.

Anggota pDataItems menentukan data khusus pemicu yang ditentukan oleh penyedia.

SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL
1
Peristiwa dipicu ketika perangkat dari kelas antarmuka perangkat yang ditentukan tiba atau ada saat sistem dimulai. Kejadian pemicu ini umumnya digunakan untuk memulai layanan.

Anggota pTriggerSubtype menentukan GUID kelas antarmuka perangkat. GUID ini didefinisikan dalam file header khusus perangkat yang disediakan dengan Windows Driver Kit (WDK).

Anggota pDataItems menentukan satu atau beberapa ID perangkat keras dan string ID yang kompatibel untuk kelas antarmuka perangkat. String harus Unicode. Jika lebih dari satu string ditentukan, peristiwa dipicu jika salah satu string cocok. Misalnya, layanan Wpdbusenum dimulai ketika perangkat kelas antarmuka perangkat GUID_DEVINTERFACE_DISK {53f56307-b6bf-11d0-94f2-00a0c91efb8b} dan string "USBSTOR\GenDisk" ID perangkat keras tiba.

SERVICE_TRIGGER_TYPE_DOMAIN_JOIN
3
Peristiwa dipicu saat komputer bergabung atau meninggalkan domain. Kejadian pemicu ini dapat digunakan untuk memulai atau menghentikan layanan.

Anggota pTriggerSubtype menentukan DOMAIN_JOIN_GUID atau DOMAIN_LEAVE_GUID.

Anggota pDataItems tidak digunakan.

SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT
4
Peristiwa dipicu ketika port firewall dibuka atau sekitar 60 detik setelah port firewall ditutup. Kejadian pemicu ini dapat digunakan untuk memulai atau menghentikan layanan.

Anggota pTriggerSubtype menentukan FIREWALL_PORT_OPEN_GUID atau FIREWALL_PORT_CLOSE_GUID.

Anggota pDataItems menentukan port, protokol, dan secara opsional jalur yang dapat dieksekusi dan informasi pengguna (string atau nama SID) dari layanan yang mendengarkan pada peristiwa tersebut. Token "RPC" dapat digunakan sebagai pengganti port untuk menentukan soket mendengarkan apa pun yang digunakan oleh RPC. Token "sistem" dapat digunakan sebagai pengganti jalur yang dapat dieksekusi untuk menentukan port yang dibuat oleh dan didengarkan oleh kernel Windows.

Peristiwa dipicu hanya jika semua string cocok. Misalnya, jika MyService yang dihosting di dalam MyServiceProcess.exe akan dimulai saat port UDP 5001 terbuka, data khusus pemicu akan menjadi representasi Unicode dari "5001\0UDP\0%programfiles%\MyApplication\MyServiceProcess.exe\0MyService\0\0".

Catatan Sebelum kejadian ini dapat didaftarkan, layanan Mesin Pemfilteran Dasar (BFE) dan semua layanan yang bergantung padanya harus dihentikan. Setelah peristiwa terdaftar, layanan dan layanan BFE yang bergantung padanya dapat dimulai ulang. Untuk informasi selengkapnya, lihat Keterangan.
 
SERVICE_TRIGGER_TYPE_GROUP_POLICY
5
Peristiwa ini dipicu ketika kebijakan komputer atau perubahan kebijakan pengguna terjadi. Kejadian pemicu ini umumnya digunakan untuk memulai layanan.

Anggota pTriggerSubtype menentukan MACHINE_POLICY_PRESENT_GUID atau USER_POLICY_PRESENT_GUID.

Anggota pDataItems tidak digunakan.

SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY
2
Peristiwa ini dipicu ketika alamat IP pertama pada tumpukan jaringan TCP/IP menjadi tersedia atau alamat IP terakhir pada tumpukan menjadi tidak tersedia. Kejadian pemicu ini dapat digunakan untuk memulai atau menghentikan layanan.

Anggota pTriggerSubtype menentukan NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID atau NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID.

Anggota pDataItems tidak digunakan.

SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT
6
Peristiwa ini dipicu ketika paket atau permintaan tiba pada protokol jaringan tertentu. Permintaan ini biasanya digunakan untuk memulai layanan yang berhenti sendiri setelah waktu diam habis ketika tidak ada pekerjaan yang harus dilakukan.

Windows 7 dan Windows Server 2008 R2: Jenis pemicu ini tidak didukung hingga Windows 8 dan Windows Server 2012.

Anggota pTriggerSubtype menentukan salah satu nilai berikut: RPC_INTERFACE_EVENT_GUID atau NAMED_PIPE_EVENT_GUID.

Anggota pDataItems menentukan GUID titik akhir atau antarmuka. String harus Unicode. Peristiwa memicu jika string sama persis.

Anggota dwAction harus SERVICE_TRIGGER_ACTION_SERVICE_START.

dwAction

Tindakan yang harus diambil ketika peristiwa pemicu yang ditentukan terjadi. Anggota ini bisa menjadi salah satu nilai berikut.

Nilai Makna
SERVICE_TRIGGER_ACTION_SERVICE_START
1
Mulai layanan saat peristiwa pemicu yang ditentukan terjadi.
SERVICE_TRIGGER_ACTION_SERVICE_STOP
2
Hentikan layanan saat peristiwa pemicu yang ditentukan terjadi.

pTriggerSubtype

Menunjuk ke GUID yang mengidentifikasi subjenis peristiwa pemicu. Nilai anggota ini tergantung pada nilai anggota dwTriggerType .

Jika dwTriggerType SERVICE_TRIGGER_TYPE_CUSTOM, pTriggerSubtype adalah GUID yang mengidentifikasi penyedia peristiwa kustom.

Jika dwTriggerType SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL, pTriggerSubtype adalah GUID yang mengidentifikasi kelas antarmuka perangkat.

Jika dwTriggerType SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT, pTriggerSubtype adalah salah satu nilai berikut.

Nilai Makna
NAMED_PIPE_EVENT_GUID
1F81D131-3FAC-4537-9E0C-7E7B0C2F4B55
Peristiwa dipicu ketika permintaan dibuat untuk membuka pipa bernama yang ditentukan oleh pDataItems. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT. Anggota dwAction harus SERVICE_TRIGGER_ACTION_SERVICE_START.
RPC_INTERFACE_EVENT_GUID
BC90D167-9470-4139-A9BA-BE0BBBF5B74D
Peristiwa ini dipicu ketika permintaan resolusi titik akhir tiba untuk GUID antarmuka RPC yang ditentukan oleh pDataItems. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT. Anggota dwAction harus SERVICE_TRIGGER_ACTION_SERVICE_START.
 

Untuk jenis peristiwa pemicu lainnya, pTriggerSubType bisa menjadi salah satu nilai berikut.

Nilai Makna
DOMAIN_JOIN_GUID
1ce20aba-9851-4421-9430-1ddeb766e809
Peristiwa dipicu saat komputer bergabung dengan domain. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_DOMAIN_JOIN.
DOMAIN_LEAVE_GUID
ddaf516e-58c2-4866-9574-c3b615d42ea1
Peristiwa dipicu ketika komputer meninggalkan domain. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_DOMAIN_JOIN.
FIREWALL_PORT_OPEN_GUID
b7569e07-8421-4ee0-ad10-86915afdad09
Peristiwa dipicu ketika port firewall yang ditentukan dibuka. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT.
FIREWALL_PORT_CLOSE_GUID
a144ed38-8e12-4de4-9d96-e64740b1a524
Peristiwa ini dipicu sekitar 60 detik setelah port firewall yang ditentukan ditutup. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT.
MACHINE_POLICY_PRESENT_GUID
659FCAE6-5BDB-4DA9-B1FF-CA2A178D46E0
Peristiwa dipicu ketika kebijakan komputer telah berubah. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_GROUP_POLICY.
NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID
4f27f2de-14e2-430b-a549-7cd48cbc8245
Peristiwa ini dipicu ketika alamat IP pertama pada tumpukan jaringan TCP/IP tersedia. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY.
NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID
cc4ba62a-162e-4648-847a-b6bdf993e335
Peristiwa ini dipicu ketika alamat IP terakhir pada tumpukan jaringan TCP/IP menjadi tidak tersedia. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY.
USER_POLICY_PRESENT_GUID
54FB46C8-F089-464C-B1FD-59D1B62C3B50
Peristiwa dipicu ketika kebijakan pengguna telah berubah. Anggota dwTriggerType harus SERVICE_TRIGGER_TYPE_GROUP_POLICY.

cDataItems

Jumlah struktur SERVICE_TRIGGER_SPECIFIC_DATA_ITEM dalam array yang ditujukkan oleh pDataItems.

Anggota ini hanya valid jika anggota dwDataType SERVICE_TRIGGER_TYPE_CUSTOM, SERVICE_TRIGGER_TYPE_DEVICE_ARRIVAL, SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT, atau SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT.

pDataItems

Penunjuk ke array struktur SERVICE_TRIGGER_SPECIFIC_DATA_ITEM yang berisi data khusus pemicu.

Keterangan

Pada sistem yang bergabung ke domain, pengaturan kebijakan keamanan dapat mencegah layanan BFE dan layanan dependennya dihentikan atau menyebabkannya dimulai ulang secara otomatis. Dalam hal ini, perlu untuk menonaktifkan layanan dan kemudian mengaktifkannya kembali setelah peristiwa terdaftar. Untuk melakukan ini secara terprogram, simpan jenis mulai asli setiap layanan, ubah jenis mulai layanan menjadi SERVICE_DISABLED, daftarkan peristiwa, lalu pulihkan jenis mulai asli layanan. Untuk informasi tentang mengubah jenis mulai layanan, lihat ChangeServiceConfig.

Untuk menonaktifkan layanan menggunakan alat baris perintah SC, gunakan perintah sc config bfe start= disabled untuk menonaktifkan layanan BFE dan layanan dependennya, lalu gunakan perintah net stop bfe /Y untuk menghentikannya. Untuk mengaktifkan kembali layanan, gunakan perintah sc config bfe start= auto. Untuk informasi selengkapnya tentang alat baris perintah SC, lihat Mengontrol Layanan Menggunakan SC.

Jika tidak memungkinkan untuk menonaktifkan layanan, mungkin perlu untuk menghidupkan ulang sistem setelah menginstal layanan yang mendaftarkan peristiwa. Dalam hal ini, jangan nonaktifkan layanan BFE dan layanan dependennya sebelum memulai ulang sistem, karena sistem mungkin tidak berfungsi dengan benar jika layanan ini tetap dinonaktifkan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Header winsvc.h

Lihat juga

ChangeServiceConfig2

QueryServiceConfig2

SERVICE_TRIGGER_INFO

SERVICE_TRIGGER_SPECIFIC_DATA_ITEM

Peristiwa Pemicu Layanan