Metode SWbemServices.ExecNotificationQueryAsync

Metode ExecNotificationQueryAsync dari objek SWbemServices menjalankan kueri untuk menerima peristiwa. Panggilan ini segera kembali dan hasil dan status dikembalikan ke pemanggil melalui peristiwa yang dikirimkan ke sink yang ditentukan dalam objWbemSink.

Peristiwa yang ditentukan dalam kueri dapat berupa peristiwa Instrumentasi Manajemen Windows (WMI) intrinsik, seperti __InstanceCreationEvent, atau peristiwa ekstrinsik, seperti Win32_IP4RouteTableEvent atau RegistryKeyChangeEvent. Untuk informasi selengkapnya, lihat Menentukan Jenis Peristiwa yang Akan Diterima.

Metode ini dipanggil dalam mode asinkron. Untuk informasi selengkapnya, lihat Memanggil Metode.

Untuk penjelasan tentang sintaks ini, lihat Konvensi Dokumen untuk Scripting API.

Sintaks

SWbemServices.ExecNotificationQueryAsync( _
  ByVal objWbemSink, _
  ByVal strQuery, _
  [ ByVal strQueryLanguage ], _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parameter

objWbemSink

Wajib diisi. Sink objek yang menerima pemberitahuan peristiwa secara asinkron. Buat objek SWbemSink untuk menerima objek.

strQuery

Wajib diisi. String yang berisi teks kueri terkait peristiwa. Parameter ini tidak boleh kosong. Untuk informasi selengkapnya tentang membangun string kueri WMI, lihat Mengkueri dengan WQL dan referensi WQL .

strQueryLanguage [opsional]

String yang berisi bahasa kueri yang akan digunakan. Jika ditentukan, nilai ini harus "WQL".

iFlags [opsional]

Bilangan bulat yang menentukan perilaku kueri. Parameter ini dapat diatur ke nilai berikut.

wbemFlagSendStatus (128 (0x80))

Menyebabkan panggilan asinkron mengirim pembaruan status ke penanganan aktivitas OnProgress untuk sink objek.

wbemFlagDontSendStatus (0 (0x0))

Mencegah panggilan asinkron mengirim pembaruan status ke penanganan aktivitas OnProgress untuk sink objek.

objwbemNamedValueSet [opsional]

Biasanya, ini tidak ditentukan. Jika tidak, ini adalah objek SWbemNamedValueSet yang elemennya mewakili informasi konteks yang dapat digunakan oleh penyedia yang melayani permintaan. Penyedia yang mendukung atau memerlukan informasi tersebut harus mendokumentasikan nama nilai yang dikenali, jenis data nilai, nilai yang diizinkan, dan semantik.

objWbemAsyncContext [opsional]

Ini adalah objek SWbemNamedValueSet yang kembali ke sink objek untuk mengidentifikasi sumber panggilan asinkron asli. Gunakan parameter ini untuk melakukan beberapa panggilan asinkron menggunakan sink objek yang sama. Untuk menggunakan parameter ini, buat objek SWbemNamedValueSet dan gunakan metode SWbemNamedValueSet.Add untuk menambahkan nilai yang mengidentifikasi panggilan asinkron yang Anda lakukan. Objek SWbemNamedValueSet dikembalikan ke sink objek dan sumber panggilan dapat diekstraksi menggunakan metode SWbemNamedValueSet.Item . Untuk informasi selengkapnya, lihat Memanggil Metode.

Menampilkan nilai

Metode ini tidak mengembalikan nilai. Jika berhasil, sink menerima peristiwa OnObjectReady per instans. Setelah instans terakhir, sink objek menerima peristiwa OnCompleted .

Kode kesalahan

Setelah penyelesaian metode ExecNotificationQueryAsync , objek Err mungkin berisi salah satu kode kesalahan yang diidentifikasi dalam daftar berikut.

wbemErrAccessDenied - 2147749891 (0x80041003)

Pengguna saat ini tidak berwenang untuk melihat tataan hasil.

wbemErrFailed - 2147749889 (0x80041001)

Kesalahan yang tidak ditentukan.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Parameter tidak valid ditentukan.

wbemErrInvalidQuery - 2147749911 (0x80041017)

Sintaks kueri tidak valid.

wbemErrInvalidQueryType - 2147749912 (0x80041018)

Bahasa kueri yang diminta tidak didukung.

wbemErrOutOfMemory - 2147749894 (0x80041006)

Tidak cukup memori untuk menyelesaikan operasi.

Keterangan

Metode ExecNotificationQueryAsync mengembalikan objek jenis peristiwa yang dihasilkan peristiwa di masa mendatang. Objek peristiwa yang diminta ExecNotificationQueryAsync dapat intrinsik (misalnya, __InstanceCreationEvent), atau ekstrinsik (misalnya, peristiwa RegistryKeyChangeEvent atau SNMP). Untuk informasi selengkapnya, lihat Menentukan Jenis Peristiwa yang Akan Diterima.

Panggilan ke ExecNotificationQueryAsync segera kembali. Objek dan status yang diminta dikembalikan ke pemanggil melalui panggilan balik yang dikirimkan ke sink yang ditentukan dalam objWbemSink. Untuk memproses setiap objek saat dikembalikan, buat objWbemSink. Subroutine peristiwa OnObjectReady . Setelah semua objek dikembalikan, lakukan pemrosesan akhir untuk mengimplementasikan objWbemSink. Peristiwa OnCompleted .

Panggilan balik asinkron memungkinkan pengguna yang tidak diautentikasi untuk menyediakan data ke sink. Ini menimbulkan risiko keamanan terhadap skrip dan aplikasi Anda. Untuk menghilangkan risiko, lihat Mengatur Keamanan pada Panggilan Asinkron.

Ada batasan jumlah kata kunci AND dan OR yang dapat digunakan dalam kueri WQL. Sejumlah besar kata kunci WQL yang digunakan dalam kueri kompleks dapat menyebabkan WMI mengembalikan kode kesalahan WBEM_E_QUOTA_VIOLATION sebagaian nilai HRESULT . Batas kata kunci WQL tergantung pada seberapa kompleks kuerinya.

Contoh

Contoh kode VBScript berikut menunjukkan skrip yang menunggu pemberitahuan peristiwa WMI yang menunjukkan bahwa proses telah dihentikan. Ini menunggu peristiwa intrinsik WMI, instans kelas peristiwa __InstanceDeletionEvent. __InstanceDeletionEvent harus mewakili penghapusan instans Win32_Process. Untuk informasi selengkapnya tentang peristiwa intrinsik WMI, lihat Menentukan Jenis Peristiwa yang Akan Diterima.

Skrip berikut berjalan tanpa batas waktu sampai komputer di-boot ulang, WMI dihentikan, atau skrip dihentikan. Untuk menghentikan skrip secara manual, gunakan Task Manager untuk menghentikan proses. Untuk menghentikannya secara terprogram, gunakan metode Hentikan di kelas Win32_Process.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & _strComputer & "\root\CIMV2") 
Set MySink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")

objWMIservice.ExecNotificationQueryAsync MySink, "SELECT * FROM __InstanceCreationEvent WITHIN 1 " _
                                               & "WHERE TargetInstance ISA 'Win32_Process'"

WScript.Echo "Waiting for events..."

While (True)
    Wscript.Sleep(1000)
Wend

Sub SINK_OnObjectReady(objObject, objAsyncContext)
    WScript.Echo "Event occurred."
End Sub

Sub SINK_OnCompleted(objObject, objAsyncContext)
    WScript.Echo "Event call complete."
End Sub

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows Vista
Server minimum yang didukung
Windows Server 2008
Header
Wbemdisp.h
Pustaka jenis
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

Lihat juga

SWbemServices

SWbemServices.ExecQuery

SWbemServices.ExecQueryAsync

Mendaftar untuk Peristiwa Registri Sistem

Menentukan Jenis Peristiwa yang Akan Diterima

Memanggil Metode

Mengatur Keamanan pada Panggilan Asinkron