Función CoWaitForMultipleHandles (combaseapi.h)

Espera a que los identificadores especificados se indiquen o que haya transcurrido un período de tiempo de espera especificado.

Sintaxis

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

Parámetros

[in] dwFlags

Opciones de espera. Los valores posibles se toman de la enumeración COWAIT_FLAGS .

[in] dwTimeout

Período de tiempo de espera, en milisegundos.

[in] cHandles

Número de elementos de la matriz pHandles .

[in] pHandles

Matriz de identificadores.

[out] lpdwindex

Puntero a una variable que, cuando el estado devuelto es S_OK, recibe un valor que indica el evento que provocó que la función devolva. Este valor suele ser el índice en pHandles para el identificador que se señalizó.

Si pHandles incluye uno o varios identificadores para los objetos de exclusión mutua, un valor entre WAIT_ABANDONED_0 y (WAIT_ABANDONED_0 + nCount - 1) indica el índice en pHandles para la exclusión mutua que se abandonó.

Si la marca de COWAIT_ALERTABLE se establece en dwFlags, un valor de WAIT_IO_COMPLETION indica que la espera finalizó mediante una o varias llamadas de procedimiento asincrónico en modo de usuario (APC) en cola al subproceso.

Consulte WaitForMultipleObjectsEx para obtener más información.

Valor devuelto

Esta función puede devolver los valores siguientes.

Nota El valor devuelto de CoWaitForMultipleHandles puede ser no determinista si la marca de COWAIT_ALERTABLE está establecida en dwFlags o si pHandles incluye uno o varios identificadores para objetos de exclusión mutua. La solución alternativa recomendada es llamar a SetLastError(ERROR_SUCCESS) antes de CoWaitForMultipleHandles.
 
Código devuelto Descripción
S_OK
Se señalizaron los identificadores o identificadores necesarios.
E_INVALIDARG
pHandles era NULL, lpdwindex era NULL o dwFlags no era un valor de la enumeración COWAIT_FLAGS .
RPC_E_NO_SYNC
El valor de pHandles era 0.
RPC_S_CALLPENDING
El período de tiempo de espera transcurrido antes de que se indicara el identificador o los identificadores necesarios.

Comentarios

Dependiendo de qué marcas se establezcan en el parámetro dwFlags, CoWaitForMultipleHandles bloquea el subproceso que realiza la llamada hasta que se produzca uno de los siguientes eventos:

  • Se señala una o todas las manijas. En el caso de objetos de exclusión mutua, esta condición también se satisface mediante una exclusión mutua que se abandona.
  • Se ha puesto en cola una llamada de procedimiento asincrónico (APC) al subproceso que llama con una llamada a la función QueueUserAPC .
  • El período de tiempo de espera expira.
Si el autor de la llamada reside en un apartamento de un solo subproceso, CoWaitForMultipleHandles entra en el bucle modal COM y el bucle de mensajes del subproceso seguirá enviando mensajes mediante el filtro de mensajes del subproceso. Si no se registra ningún filtro de mensajes para el subproceso, se usa el procesamiento de mensajes COM predeterminado.

Si el subproceso de llamada reside en un apartamento multiproceso (MTA), CoWaitForMultipleHandles llama a la función WaitForMultipleObjectsEx .

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado combaseapi.h (incluya Objbase.h)
Library Ole32.lib
Archivo DLL Ole32.dll

Consulte también

COWAIT_FLAGS