Bagikan melalui


Fungsi UnregisterWaitEx

Membatalkan operasi tunggu terdaftar yang dikeluarkan oleh fungsi RegisterWaitForSingleObject .

Sintaks

BOOL WINAPI UnregisterWaitEx(
  _In_     HANDLE WaitHandle,
  _In_opt_ HANDLE CompletionEvent
);

Parameter

WaitHandle [in]

Handel tunggu. Handel ini dikembalikan oleh fungsi RegisterWaitForSingleObject .

CompletionEvent [in, opsional]

Handel ke objek peristiwa yang akan disinyalkan ketika operasi tunggu telah dibatalkan pendaftarannya. Parameter ini bisa NULL.

Jika parameter ini INVALID_HANDLE_VALUE, fungsi menunggu semua fungsi panggilan balik selesai sebelum kembali.

Jika parameter ini NULL, fungsi menandai timer untuk penghapusan dan segera kembali. Namun, sebagian besar penelepon harus menunggu fungsi panggilan balik selesai sehingga mereka dapat melakukan pembersihan yang diperlukan.

Jika pemanggil menyediakan peristiwa ini dan fungsi berhasil atau fungsi gagal dengan ERROR_IO_PENDING, jangan tutup peristiwa sampai disinyalkan.

Menampilkan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Anda tidak dapat melakukan panggilan pemblokiran ke UnregisterWaitEx dari dalam fungsi panggilan balik untuk operasi tunggu yang sama. Jika tidak, panggilan balik akan menunggu dirinya selesai. Secara umum, panggilan pemblokiran ke UnregisterWaitEx membuat dependensi antara utas saat ini dan panggilan balik, jadi untuk melakukan pemblokiran panggilan batalkan pendaftaran pada operasi tunggu lain, Anda harus memastikan bahwa fungsi panggilan balik tidak bergantung satu sama lain dan bahwa operasi tunggu kedua tidak juga melakukan pemblokiran panggilan batalkan pendaftaran pada operasi pertama.

Berhati-hatilah saat melakukan pemblokiran panggilan UnregisterWaitEx pada utas persisten. Jika operasi tunggu yang tidak terdaftar dibuat dengan WT_EXECUTEINPERSISTENTTHREAD, kebuntuan dapat terjadi.

Setelah melakukan panggilan non-pemblokiran ke UnregisterWaitEx, tidak ada fungsi panggilan balik baru yang terkait dengan WaitHandle yang dapat diantrekan. Namun, mungkin ada fungsi panggilan balik yang tertunda yang sudah diantrekan ke utas pekerja.

Dalam beberapa kondisi, fungsi akan gagal dengan ERROR_IO_PENDING jika CompletionEvent adalah NULL. Ini menunjukkan bahwa ada fungsi panggilan balik yang luar biasa. Panggilan balik tersebut akan dijalankan atau berada di tengah-tengah eksekusi.

Jika CompletionEvent adalah handel ke peristiwa yang disediakan oleh pemanggil, fungsi mungkin berhasil, gagal dengan ERROR_IO_PENDING, atau gagal dengan kode kesalahan yang berbeda. Jika fungsi berhasil, atau jika fungsi gagal dengan ERROR_IO_PENDING, pemanggil harus selalu menunggu sampai peristiwa disinyalkan untuk menutup peristiwa. Jika fungsi gagal dengan kode kesalahan yang berbeda, tidak perlu menunggu sampai peristiwa disinyalkan untuk menutup peristiwa.

Windows XP: Jika CompletionEvent adalah handel ke peristiwa yang disediakan oleh pemanggil dan fungsi gagal dengan ERROR_IO_PENDING, pemanggil harus menunggu hingga peristiwa disinyalkan untuk menutup peristiwa. Perilaku ini berubah dimulai dengan Windows Vista.

Untuk mengkompilasi aplikasi yang menggunakan fungsi ini, tentukan _WIN32_WINNT sebagai 0x0500 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows XP [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2003 [hanya aplikasi desktop]
Header
Threadpoollegacyapiset.h pada Windows 8 dan Windows Server 2012 (termasuk Windows.h);
WinBase.h pada Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP dan Windows Server 2003 (termasuk Windows.h)
Pustaka
Kernel32.lib
DLL
Kernel32.dll

Lihat juga

RegisterWaitForSingleObject

Fungsi Sinkronisasi

Pengumpulan Utas