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.
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 |
---|---|
|
Layanan dapat berinteraksi dengan desktop.
Untuk informasi selengkapnya, lihat Layanan Interaktif. |
dwCurrentState
Status layanan saat ini. Anggota ini bisa menjadi salah satu nilai berikut.
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 |
---|---|
|
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 . |
|
Layanan dapat dibaca ulang parameter startup-nya tanpa dihentikan dan dimulai ulang.
Kode kontrol ini memungkinkan layanan untuk menerima pemberitahuan SERVICE_CONTROL_PARAMCHANGE . |
|
Layanan dapat dijeda dan dilanjutkan.
Kode kontrol ini memungkinkan layanan untuk menerima pemberitahuan SERVICE_CONTROL_PAUSE dan SERVICE_CONTROL_CONTINUE . |
|
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. |
|
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. |
|
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.)
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) |