Partager via


CoWaitForMultipleHandles, fonction (combaseapi.h)

Attend que les handles spécifiés soient signalés ou qu’un délai d’expiration spécifié s’écoule.

Syntaxe

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

Paramètres

[in] dwFlags

Options d’attente. Les valeurs possibles sont extraites de l’énumération COWAIT_FLAGS .

[in] dwTimeout

Délai d'attente, en millisecondes.

[in] cHandles

Nombre d’éléments dans le tableau pHandles .

[in] pHandles

Tableau de handles.

[out] lpdwindex

Pointeur vers une variable qui, lorsque le status retourné est S_OK, reçoit une valeur indiquant l’événement qui a provoqué le retour de la fonction. Cette valeur est généralement l’index dans pHandles pour le handle qui a été signalé.

Si pHandles inclut un ou plusieurs handles pour les objets mutex, une valeur comprise entre WAIT_ABANDONED_0 et (WAIT_ABANDONED_0 + nCount - 1) indique l’index dans pHandles pour le mutex qui a été abandonné.

Si l’indicateur COWAIT_ALERTABLE est défini dans dwFlags, la valeur WAIT_IO_COMPLETION indique que l’attente a été terminée par un ou plusieurs appels de procédure asynchrone en mode utilisateur (APC) mis en file d’attente vers le thread.

Pour plus d’informations, consultez WaitForMultipleObjectsEx .

Valeur retournée

Cette fonction peut retourner les valeurs suivantes.

Note La valeur de retour de CoWaitForMultipleHandles peut être non déterministe si l’indicateur COWAIT_ALERTABLE est défini dans dwFlags, ou si pHandles inclut un ou plusieurs handles pour mutex. La solution de contournement recommandée consiste à appeler SetLastError(ERROR_SUCCESS) avant CoWaitForMultipleHandles.
 
Code de retour Description
S_OK
Le ou les handles requis ont été signalés.
E_INVALIDARG
pHandles était NULL, lpdwindex était NULL ou dwFlags n’était pas une valeur de l’énumération COWAIT_FLAGS .
RPC_E_NO_SYNC
La valeur de pHandles était 0.
RPC_S_CALLPENDING
Le délai d’expiration s’est écoulé avant que le ou les handles requis soient signalés.

Notes

Selon les indicateurs définis dans le paramètre dwFlags, CoWaitForMultipleHandles bloque le thread appelant jusqu’à ce que l’un des événements suivants se produise :

  • Un ou tous les handles sont signalés. Dans le cas d’objets mutex, cette condition est également remplie par l’abandon d’un mutex.
  • Un appel de procédure asynchrone (APC) a été mis en file d’attente vers le thread appelant avec un appel à la fonction QueueUserAPC .
  • Le délai d’expiration expire.
Si l’appelant réside dans un appartement à thread unique, CoWaitForMultipleHandles entre dans la boucle modale COM, et la boucle de message du thread continue à distribuer les messages à l’aide du filtre de messages du thread. Si aucun filtre de message n’est inscrit pour le thread, le traitement des messages COM par défaut est utilisé.

Si le thread appelant réside dans un appartement multithread (MTA), CoWaitForMultipleHandles appelle la fonction WaitForMultipleObjectsEx .

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête combaseapi.h (inclure Objbase.h)
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

COWAIT_FLAGS