Fungsi EvtSubscribe (winevt.h)
Membuat langganan yang akan menerima peristiwa saat ini dan yang akan datang dari saluran atau file log yang cocok dengan kriteria kueri yang ditentukan.
Sintaks
EVT_HANDLE EvtSubscribe(
[in] EVT_HANDLE Session,
[in] HANDLE SignalEvent,
[in] LPCWSTR ChannelPath,
[in] LPCWSTR Query,
[in] EVT_HANDLE Bookmark,
[in] PVOID Context,
[in] EVT_SUBSCRIBE_CALLBACK Callback,
[in] DWORD Flags
);
Parameter
[in] Session
Handel sesi jarak jauh yang dikembalikan fungsi EvtOpenSession . Atur ke NULL untuk berlangganan peristiwa di komputer lokal.
[in] SignalEvent
Handel ke objek peristiwa yang akan disinyalkan layanan saat peristiwa baru tersedia yang cocok dengan kriteria kueri Anda. Parameter ini harus NULL jika parameter Callback bukan NULL.
[in] ChannelPath
Nama Admin atau saluran Operasional yang berisi peristiwa yang ingin Anda berlangganan (Anda tidak dapat berlangganan saluran Analitik atau Debug). Jalur diperlukan jika parameter Kueri berisi kueri JalurX; jalur diabaikan jika parameter Kueri berisi kueri XML terstruktur.
[in] Query
Kueri yang menentukan jenis peristiwa yang Anda inginkan untuk dikembalikan oleh layanan langganan. Anda dapat menentukan kueri XPath 1.0 atau kueri XML terstruktur. Jika JalurX Anda berisi lebih dari 20 ekspresi, gunakan kueri XML terstruktur. Untuk menerima semua peristiwa, atur parameter ini ke NULL atau "*".
[in] Bookmark
Handel ke bookmark yang mengidentifikasi titik awal untuk langganan. Untuk mendapatkan handel bookmark, panggil fungsi EvtCreateBookmark . Anda harus mengatur parameter ini jika parameter Bendera berisi bendera EvtSubscribeStartAfterBookmark; jika tidak, NULL.
[in] Context
Nilai konteks yang ditentukan penelepon yang akan diteruskan layanan langganan ke panggilan balik yang ditentukan setiap kali mengirimkan peristiwa.
[in] Callback
Arahkan ke fungsi panggilan balik EVT_SUBSCRIBE_CALLBACK Anda yang akan menerima peristiwa langganan. Parameter ini harus NULL jika parameter SignalEvent bukan NULL.
[in] Flags
Satu atau beberapa bendera yang menentukan kapan harus mulai berlangganan peristiwa. Misalnya, jika Anda menentukan EvtSubscribeStartAtOldestRecord, layanan akan mengambil semua peristiwa saat ini dan yang akan datang yang cocok dengan kriteria kueri Anda; namun, jika Anda menentukan EvtSubscribeToFutureEvents, layanan hanya mengembalikan peristiwa mendatang yang cocok dengan kriteria kueri Anda. Untuk nilai yang mungkin, lihat enumerasi EVT_SUBSCRIBE_FLAGS .
Nilai kembali
Handel ke langganan jika berhasil; jika tidak, NULL. Jika fungsi mengembalikan NULL, panggil fungsi GetLastError untuk mendapatkan kode kesalahan. Anda harus memanggil fungsi EvtClose dengan handel langganan setelah selesai.
Keterangan
Untuk membatalkan langganan, berikan handel langganan yang dikembalikan ke fungsi EvtClose .
Ada dua model langganan: model polling dan model pendorongan. Dalam model pendorongan, Anda menerapkan panggilan balik langganan dan mengatur parameter Panggilan Balik ke implementasi Anda. Layanan akan memanggil panggilan balik Anda untuk setiap peristiwa yang cocok dengan kriteria kueri Anda (atau jika terjadi kesalahan).
Dalam model polling, Anda membuat objek peristiwa yang diberi sinyal layanan. Saat diberi sinyal, Anda memanggil fungsi EvtNext menggunakan handel langganan untuk menghitung peristiwa. Anda harus memanggil fungsi EvtClose pada setiap peristiwa yang Anda hitung. Anda kemudian mengatur ulang objek dan menunggu layanan memberi sinyal lagi. Proses ini berulang hingga Anda membatalkan langganan.
Contoh
Untuk contoh yang menunjukkan cara menggunakan fungsi ini, lihat Berlangganan Peristiwa.
Persyaratan
Klien minimum yang didukung | Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winevt.h |
Pustaka | Wevtapi.lib |
DLL | Wevtapi.dll |