Bagikan melalui


struktur SERVICE_STATUS_PROCESS (winsvc.h)

Berisi informasi status proses untuk layanan. Fungsi ControlServiceEx, EnumServicesStatusEx, NotifyServiceStatusChange, dan QueryServiceStatusEx menggunakan struktur ini.

Sintaks

typedef struct _SERVICE_STATUS_PROCESS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  DWORD dwCheckPoint;
  DWORD dwWaitHint;
  DWORD dwProcessId;
  DWORD dwServiceFlags;
} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;

Anggota

dwServiceType

Jenis layanan. Anggota ini bisa menjadi salah satu nilai berikut.

Nilai Makna
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Layanan ini adalah driver sistem file.
SERVICE_KERNEL_DRIVER
0x00000001
Layanan ini adalah driver perangkat.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Layanan berjalan dalam prosesnya sendiri.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Layanan berbagi proses dengan layanan lain.
 

Jika jenis layanan SERVICE_WIN32_OWN_PROCESS atau SERVICE_WIN32_SHARE_PROCESS, dan layanan berjalan dalam konteks akun LocalSystem, jenis berikut juga dapat ditentukan.

Nilai Makna
SERVICE_INTERACTIVE_PROCESS
Layanan dapat berinteraksi dengan desktop.

Untuk informasi selengkapnya, lihat Layanan Interaktif.

dwCurrentState

Status layanan saat ini. Anggota ini bisa menjadi salah satu nilai berikut.

Nilai Makna
SERVICE_CONTINUE_PENDING
0x00000005
Layanan akan dilanjutkan.
SERVICE_PAUSE_PENDING
0x00000006
Layanan ini dijeda.
SERVICE_PAUSED
0x00000007
Layanan dijeda.
SERVICE_RUNNING
0x00000004
Layanan sedang berjalan.
SERVICE_START_PENDING
0x00000002
Layanan dimulai.
SERVICE_STOP_PENDING
0x00000003
Layanan berhenti.
SERVICE_STOPPED
0x00000001
Layanan telah dihentikan.

dwControlsAccepted

Kode kontrol yang diterima layanan dan proses dalam fungsi handler-nya (lihat Handler dan HandlerEx). Proses antarmuka pengguna dapat mengontrol layanan dengan menentukan perintah kontrol dalam fungsi ControlService atau ControlServiceEx . Secara default, semua layanan menerima nilai SERVICE_CONTROL_INTERROGATE .

Berikut ini adalah kode kontrol.

Kode kontrol Makna
SERVICE_ACCEPT_NETBINDCHANGE
0x00000010
Layanan ini adalah komponen jaringan yang dapat menerima perubahan dalam pengikatannya tanpa dihentikan dan dimulai ulang.

Kode kontrol ini memungkinkan layanan untuk menerima pemberitahuan SERVICE_CONTROL_NETBINDADD, SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE, dan SERVICE_CONTROL_NETBINDDISABLE .

SERVICE_ACCEPT_PARAMCHANGE
0x00000008
Layanan dapat dibaca ulang parameter startup-nya tanpa dihentikan dan dimulai ulang.

Kode kontrol ini memungkinkan layanan untuk menerima pemberitahuan SERVICE_CONTROL_PARAMCHANGE .

SERVICE_ACCEPT_PAUSE_CONTINUE
0x00000002
Layanan dapat dijeda dan dilanjutkan.

Kode kontrol ini memungkinkan layanan untuk menerima pemberitahuan SERVICE_CONTROL_PAUSE dan SERVICE_CONTROL_CONTINUE .

SERVICE_ACCEPT_PRESHUTDOWN
0x00000100
Layanan dapat melakukan tugas preshutdown.

Kode kontrol ini memungkinkan layanan menerima pemberitahuan SERVICE_CONTROL_PRESHUTDOWN . Perhatikan bahwa ControlService dan ControlServiceEx tidak dapat mengirim pemberitahuan ini; hanya sistem yang dapat mengirimkannya.

Windows Server 2003 dan Windows XP: Nilai ini tidak didukung.

SERVICE_ACCEPT_SHUTDOWN
0x00000004
Layanan diberi tahu ketika pematian sistem terjadi.

Kode kontrol ini memungkinkan layanan untuk menerima pemberitahuan SERVICE_CONTROL_SHUTDOWN . Perhatikan bahwa ControlService dan ControlServiceEx tidak dapat mengirim pemberitahuan ini; hanya sistem yang dapat mengirimkannya.

SERVICE_ACCEPT_STOP
0x00000001
Layanan dapat dihentikan.

Kode kontrol ini memungkinkan layanan untuk menerima pemberitahuan SERVICE_CONTROL_STOP .

 

Anggota ini juga dapat berisi kode kontrol yang diperluas berikut, yang hanya didukung oleh HandlerEx. (Perhatikan bahwa kode kontrol ini tidak dapat dikirim oleh ControlService atau ControlServiceEx.)

Kode kontrol Makna
SERVICE_ACCEPT_HARDWAREPROFILECHANGE
0x00000020
Layanan ini diberi tahu ketika profil perangkat keras komputer telah berubah. Ini memungkinkan sistem untuk mengirim pemberitahuan SERVICE_CONTROL_HARDWAREPROFILECHANGE ke layanan.
SERVICE_ACCEPT_POWEREVENT
0x00000040
Layanan diberi tahu ketika status daya komputer telah berubah. Ini memungkinkan sistem untuk mengirim pemberitahuan SERVICE_CONTROL_POWEREVENT ke layanan.
SERVICE_ACCEPT_SESSIONCHANGE
0x00000080
Layanan diberi tahu ketika status sesi komputer telah berubah. Ini memungkinkan sistem untuk mengirim pemberitahuan SERVICE_CONTROL_SESSIONCHANGE ke layanan.

dwWin32ExitCode

Kode kesalahan yang digunakan layanan untuk melaporkan kesalahan yang terjadi saat dimulai atau dihentikan. Untuk mengembalikan kode kesalahan khusus untuk layanan, layanan harus mengatur nilai ini ke ERROR_SERVICE_SPECIFIC_ERROR untuk menunjukkan bahwa anggota dwServiceSpecificExitCode berisi kode kesalahan. Layanan harus mengatur nilai ini ke NO_ERROR saat berjalan dan ketika berakhir secara normal.

dwServiceSpecificExitCode

Kode kesalahan khusus layanan yang dikembalikan layanan ketika terjadi kesalahan saat layanan dimulai atau dihentikan. Nilai ini diabaikan kecuali anggota dwWin32ExitCode diatur ke ERROR_SERVICE_SPECIFIC_ERROR.

dwCheckPoint

Nilai check-point yang naik secara berkala untuk melaporkan kemajuannya selama operasi mulai, hentikan, jeda, atau lanjutkan operasi yang panjang. Misalnya, layanan harus menaikkan nilai ini karena menyelesaikan setiap langkah inisialisasinya saat dimulai. Program antarmuka pengguna yang memanggil operasi pada layanan menggunakan nilai ini untuk melacak kemajuan layanan selama operasi yang panjang. Nilai ini tidak valid dan harus nol ketika layanan tidak memiliki operasi mulai, berhenti, jeda, atau lanjutkan tertunda.

dwWaitHint

Perkiraan waktu yang diperlukan untuk operasi mulai, berhenti, jeda, atau lanjutkan yang tertunda, dalam milidetik. Sebelum jumlah waktu yang ditentukan berlalu, layanan harus melakukan panggilan berikutnya ke fungsi SetServiceStatus dengan nilai dwCheckPoint bertahap atau perubahan dwCurrentState. Jika jumlah waktu yang ditentukan oleh dwWaitHint berlalu, dan dwCheckPoint belum bertambah atau dwCurrentState tidak berubah, manajer kontrol layanan atau program kontrol layanan dapat mengasumsikan bahwa kesalahan telah terjadi dan layanan harus dihentikan. Namun, jika layanan berbagi proses dengan layanan lain, manajer kontrol layanan tidak dapat menghentikan aplikasi layanan karena harus mengakhiri layanan lain yang berbagi proses juga.

dwProcessId

Pengidentifikasi proses layanan.

dwServiceFlags

Anggota ini bisa menjadi salah satu nilai berikut.

Nilai Makna
0
Layanan ini berjalan dalam proses yang bukan proses sistem, atau tidak berjalan.

Jika layanan berjalan dalam proses yang bukan proses sistem, dwProcessId bukan nol. Jika layanan tidak berjalan, dwProcessId adalah nol.

SERVICE_RUNS_IN_SYSTEM_PROCESS
0x00000001
Layanan berjalan dalam proses sistem yang harus selalu berjalan.

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Header winsvc.h (sertakan Windows.h)

Lihat juga

ControlServiceEx

EnumServicesStatusEx

NotifyServiceStatusChange

QueryServiceStatusEx