Bagikan melalui


Metode IWbemServices::CancelAsyncCall (wbemcli.h)

Metode IWbemServices::CancelAsyncCall membatalkan panggilan asinkron yang saat ini tertunda berdasarkan pointer IWbemObjectSink , yang awalnya diteruskan ke metode asinkron. Penunjuk IWbemObjectSink yang beredar dapat dirilis sebelum panggilan atau setelah panggilan kembali. Metode CancelAsyncCall tidak beroperasi dari dalam sink dan tidak didukung oleh penyedia metode. Ini berarti hanya akhir panggilan klien yang dibatalkan. Penyedia pelaksana tidak diberi tahu bahwa panggilan dibatalkan dan dijalankan hingga selesai. Anda harus mempertimbangkan ini sebelum membatalkan metode yang membutuhkan waktu lama untuk diselesaikan, seperti metode Defrag dan Format di kelas Win32_Volume .

Sintaks

HRESULT CancelAsyncCall(
  [in] IWbemObjectSink *pSink
);

Parameter

[in] pSink

Arahkan ke implementasi IWbemObjectSink yang disediakan oleh klien ke salah satu metode asinkron IWbemServices.

Mengembalikan nilai

Metode ini mengembalikan HRESULT yang menunjukkan status panggilan metode. Daftar berikut mencantumkan nilai yang terkandung dalam HRESULT.

Jika gagal, Anda dapat memperoleh informasi yang tersedia dari fungsi COM GetErrorInfo.

Kode kesalahan khusus COM juga dapat dikembalikan jika masalah jaringan menyebabkan Anda kehilangan koneksi jarak jauh ke Manajemen Windows.

Catatan Jika SetStatus belum dipanggil pada sink aplikasi pada saat WMI memproses CancelAsyncCall, WMI memanggil SetStatus pada sink tersebut dengan WBEM_E_CALL_CANCELLED sebagai nilai untuk parameter hResult .
 
Waktu, dan sifat operasi asinkron, dapat memengaruhi apakah WMI dapat membatalkan operasi. Hanya kueri panjang yang kemungkinan akan berhasil dibatalkan sebelum selesai. Operasi yang lebih cepat, seperti penghapusan atau modifikasi asinkron, biasanya selesai sebelum WMI dapat memproses panggilan CancelAsyncCall . Jadi sementara CancelAsyncCall mencoba membatalkan operasi saat ini, terkadang yang dapat dilakukan hanyalah melepaskan pointer IWbemObjectSink .
Catatan Dimungkinkan untuk melakukan banyak panggilan asinkron menggunakan sink objek yang sama. Dalam hal ini, metode CancelAsyncCall membatalkan semua panggilan asinkron yang berbagi sink objek ini. Sangat disarankan agar Anda membuat satu instans sink objek untuk setiap panggilan asinkron yang luar biasa.
 

Keterangan

Karena panggilan balik ke sink mungkin tidak dikembalikan pada tingkat autentikasi yang sama dengan yang diperlukan klien, disarankan agar Anda menggunakan semisinkron alih-alih komunikasi asinkron. Untuk informasi selengkapnya, lihat Memanggil Metode. Memanggil CancelAsyncCall dari dalam implementasi IWbemObjectSink::Indicate atau IWbemObjectSink::SetStatus dapat mengganggu status WMI dan tidak disarankan.

Dalam kasus panggilan metode seperti ExecMethodAsync, hanya akhir panggilan klien yang dibatalkan. Penyedia pelaksana tidak diberi tahu bahwa panggilan dibatalkan dan dijalankan hingga selesai.

Untuk informasi selengkapnya tentang cara menggunakan panggilan asinkron, lihat Melakukan Panggilan Asinkron dengan C++ dan Menerima Pemberitahuan Peristiwa Asinkron

Contoh

Untuk contoh lengkap yang menggunakan CancelAsyncCall, lihat Contoh: Menerima Pemberitahuan Peristiwa Melalui WMI

Sampel C++ berikut, diambil dari sampel \\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\wmi\vc\decoupled\instance_provider, menunjukkan implementasi CancelAsyncCall.
HRESULT CProvider_IWbemServices :: CancelAsyncCall ( 
  
 IWbemObjectSink *a_Sink
)
{
 HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
 return t_Result ;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header wbemcli.h (termasuk Wbemidl.h)
Pustaka Wbemuuid.lib
DLL Fastprox.dll; Esscli.dll; FrameDyn.dll; FrameDynOS.dll; Ntevt.dll; Stdprov.dll; Viewprov.dll; Wbemcomn.dll; Wbemcore.dll; Wbemess.dll; Wbemsvc.dll; Wmipicmp.dll; Wmidcprv.dll; Wmipjobj.dll; Wmiprvsd.dll

Lihat juga

IWbemObjectSink

IWbemServices