Fungsi SubscribeServiceChangeNotifications
Berlangganan pemberitahuan perubahan status layanan menggunakan fungsi panggilan balik.
Sintaks
DWORD WINAPI SubscribeServiceChangeNotifications(
_In_ SC_HANDLE hService,
_In_ SC_EVENT_TYPE eEventType,
_In_ PSC_NOTIFICATION_CALLBACK pCallback,
_In_opt_ PVOID pCallbackContext,
_Out_ PSC_NOTIFICATION_REGISTRATION *pSubscription
);
Parameter
-
hService [in]
-
Handel ke layanan atau handel ke manajer kontrol layanan (SCM) untuk memantau perubahan.
Handel ke layanan dikembalikan oleh fungsi OpenService dan CreateService dan harus memiliki hak akses SERVICE_QUERY_STATUS . Handel ke manajer kontrol layanan dikembalikan oleh fungsi OpenSCManager dan harus memiliki hak akses SC_MANAGER_ENUMERATE_SERVICE .
-
eEventType [in]
-
Menentukan jenis perubahan status yang harus dilaporkan. Parameter ini diatur ke salah satu nilai yang ditentukan dalam SC_EVENT_TYPE. Perilaku untuk fungsi ini berbeda tergantung pada jenis peristiwa sebagai berikut.
Nilai Makna - SC_EVENT_DATABASE_CHANGE
- 0
Layanan telah ditambahkan atau dihapus. Parameter hService harus berupa handel ke SCM. - SC_EVENT_PROPERTY_CHANGE
- 1
Satu atau beberapa properti layanan telah diperbarui. Parameter hService harus menjadi handel ke layanan. - SC_EVENT_STATUS_CHANGE
- 2
Status layanan telah berubah. Parameter hService harus menjadi handel ke layanan. -
pCallback [in]
-
Menentukan fungsi panggilan balik. Panggilan balik harus didefinisikan sebagai memiliki jenis SC_NOTIFICATION_CALLBACK. Untuk informasi selengkapnya, lihat Keterangan.
-
pCallbackContext [in, opsional]
-
Penunjuk yang mewakili konteks untuk panggilan balik pemberitahuan ini.
-
pSubscription [out]
-
Mengembalikan pointer ke langganan yang dihasilkan dari pendaftaran panggilan balik pemberitahuan. Pemanggil bertanggung jawab untuk memanggil UnsubscribeServiceChangeNotifications untuk berhenti menerima pemberitahuan.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan adalah ERROR_SUCCESS.
Jika fungsi gagal, nilai yang dikembalikan adalah salah satu kode kesalahan sistem.
Keterangan
Fungsi panggilan balik dinyatakan sebagai berikut:
typedef VOID CALLBACK SC_NOTIFICATION_CALLBACK(
_In_ DWORD dwNotify,
_In_ PVOID pCallbackContext
);
typedef SC_NOTIFICATION_CALLBACK* PSC_NOTIFICATION_CALLBACK;
Fungsi panggilan balik menerima penunjuk ke konteks yang disediakan oleh pemanggil. Panggilan balik dipanggil sebagai akibat dari peristiwa perubahan status layanan. Ketika panggilan balik dipanggil, itu disediakan dengan bitmask nilai SERVICE_NOTIFY_XXX yang menunjukkan jenis perubahan status layanan. Ketika panggilan balik disediakan dengan nol alih-alih nilai SERVICE_NOTIFY_XXX yang valid, aplikasi harus memverifikasi apa yang diubah.
Fungsi panggilan balik tidak boleh memblokir eksekusi. Jika Anda mengharapkan eksekusi fungsi panggilan balik memakan waktu, bongkar pekerjaan yang Anda lakukan dalam fungsi panggilan balik ke utas terpisah dengan mengantre item kerja ke utas di kumpulan utas. Beberapa jenis pekerjaan yang dapat membuat fungsi panggilan balik membutuhkan waktu termasuk melakukan I/O file, menunggu peristiwa, dan melakukan panggilan prosedur jarak jauh eksternal.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows 8 [khusus aplikasi desktop] |
Server minimum yang didukung |
Windows Server 2012 [hanya aplikasi desktop] |
Header |
|
DLL |
|