Bagikan melalui


struktur SERVICE_STATUS (winsvc.h)

Berisi informasi status untuk layanan. Fungsi ControlService, EnumDependentServices, EnumServicesStatus, dan QueryServiceStatus menggunakan struktur ini. Layanan menggunakan struktur ini dalam fungsi SetServiceStatus untuk melaporkan statusnya saat ini ke manajer kontrol layanan.

Sintaks

typedef struct _SERVICE_STATUS {
  DWORD dwServiceType;
  DWORD dwCurrentState;
  DWORD dwControlsAccepted;
  DWORD dwWin32ExitCode;
  DWORD dwServiceSpecificExitCode;
  DWORD dwCheckPoint;
  DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;

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.
SERVICE_USER_OWN_PROCESS
0x00000050
Layanan berjalan dalam prosesnya sendiri di bawah akun pengguna yang masuk.
SERVICE_USER_SHARE_PROCESS
0x00000060
Layanan berbagi proses dengan satu atau beberapa layanan lain yang berjalan di bawah akun pengguna yang masuk.
 

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
0x00000100
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 terus tertunda.
SERVICE_PAUSE_PENDING
0x00000006
Jeda layanan tertunda.
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 tidak berjalan.

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 .

Untuk menerima nilai SERVICE_CONTROL_DEVICEEVENT , layanan harus mendaftar untuk menerima peristiwa perangkat dengan menggunakan fungsi RegisterDeviceNotification .

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 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.
SERVICE_ACCEPT_TIMECHANGE
0x00000200
Layanan diberi tahu ketika waktu sistem telah berubah. Ini memungkinkan sistem untuk mengirim pemberitahuan SERVICE_CONTROL_TIMECHANGE ke layanan.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Kode kontrol ini tidak didukung.

SERVICE_ACCEPT_TRIGGEREVENT
0x00000400
Layanan diberi tahu ketika peristiwa yang telah didaftarkan layanan terjadi. Ini memungkinkan sistem untuk mengirim pemberitahuan SERVICE_CONTROL_TRIGGEREVENT ke layanan.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Kode kontrol ini tidak didukung.

SERVICE_ACCEPT_USERMODEREBOOT
0x00000800
Layanan akan diberi tahu ketika pengguna memulai reboot.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Kode kontrol ini tidak didukung.

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 pada penghentian 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 dinaikkan layanan secara berkala untuk melaporkan kemajuannya selama operasi mulai, hentikan, jeda, atau lanjutkan 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.

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

ControlService

ControlServiceEx

EnumDependentServices

EnumServicesStatus

QueryServiceStatus

SetServiceStatus