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 |
|
Pustaka jenis |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk