Bagikan melalui


Fungsi CoWaitForMultipleHandles (combaseapi.h)

Menunggu handel tertentu disinyalkan atau periode batas waktu tertentu berlalu.

Sintaks

HRESULT CoWaitForMultipleHandles(
  [in]  DWORD    dwFlags,
  [in]  DWORD    dwTimeout,
  [in]  ULONG    cHandles,
  [in]  LPHANDLE pHandles,
  [out] LPDWORD  lpdwindex
);

Parameter

[in] dwFlags

Opsi tunggu. Nilai yang mungkin diambil dari enumerasi COWAIT_FLAGS .

[in] dwTimeout

Periode batas waktu, dalam milidetik.

[in] cHandles

Jumlah elemen dalam array pHandles .

[in] pHandles

Array handel.

[out] lpdwindex

Penunjuk ke variabel yang, ketika status yang dikembalikan S_OK, menerima nilai yang menunjukkan peristiwa yang menyebabkan fungsi kembali. Nilai ini biasanya merupakan indeks ke dalam pHandles untuk handel yang diberi sinyal.

Jika pHandles menyertakan satu atau beberapa handel ke objek mutex, nilai antara WAIT_ABANDONED_0 dan (WAIT_ABANDONED_0 + nCount - 1) menunjukkan indeks ke dalam pHandles untuk mutex yang ditinggalkan.

Jika bendera COWAIT_ALERTABLE diatur dalam dwFlags, nilai WAIT_IO_COMPLETION menunjukkan bahwa penantian berakhir dengan satu atau beberapa panggilan prosedur asinkron mode pengguna (APC) yang diantrekan ke utas.

Lihat WaitForMultipleObjectsEx untuk informasi selengkapnya.

Nilai kembali

Fungsi ini dapat mengembalikan nilai berikut.

Catatan Nilai pengembalian CoWaitForMultipleHandles dapat menjadi nondeterministik jika bendera COWAIT_ALERTABLE diatur dalam dwFlags, atau jika pHandles menyertakan satu atau beberapa handel untuk membisukan objek. Solusi yang disarankan adalah memanggil SetLastError(ERROR_SUCCESS) sebelum CoWaitForMultipleHandles.
 
Menampilkan kode Deskripsi
S_OK
Handel atau handel yang diperlukan diberi sinyal.
E_INVALIDARG
pHandles adalah NULL, lpdwindex adalah NULL, atau dwFlags bukan nilai dari enumerasi COWAIT_FLAGS .
RPC_E_NO_SYNC
Nilai pHandles adalah 0.
RPC_S_CALLPENDING
Periode batas waktu berlalu sebelum handel atau handel yang diperlukan diberi sinyal.

Keterangan

Bergantung pada bendera mana yang diatur dalam parameter dwFlags, CoWaitForMultipleHandles memblokir utas panggilan hingga salah satu peristiwa berikut terjadi:

  • Satu atau semua handel disinyalkan. Dalam kasus objek mutex, kondisi ini juga puas dengan mutex yang ditinggalkan.
  • Panggilan prosedur asinkron (APC) telah diantrekan ke utas panggilan dengan panggilan ke fungsi QueueUserAPC .
  • Periode batas waktu berakhir.
Jika penelepon berada di apartemen utas tunggal, CoWaitForMultipleHandles memasuki perulangan modal COM, dan perulangan pesan utas akan terus mengirimkan pesan menggunakan filter pesan utas. Jika tidak ada filter pesan yang terdaftar untuk utas, pemrosesan pesan COM default akan digunakan.

Jika utas panggilan berada di apartemen multithread (MTA), CoWaitForMultipleHandles memanggil fungsi WaitForMultipleObjectsEx .

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header combaseapi.h (termasuk Objbase.h)
Pustaka Ole32.lib
DLL Ole32.dll

Lihat juga

COWAIT_FLAGS