Bagikan melalui


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

Lihat juga

EVT_SUBSCRIBE_CALLBACK

EvtQuery