Bagikan melalui


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
Winsvcp.h
DLL
SecHost.dll

Lihat juga

CreateService

OpenService

OpenSCManager

Berhenti berlanggananServiceChangeNotifications

QueryServiceDynamicInformation