Función DequeueUmsCompletionListItems (winbase.h)

Recupera los subprocesos de trabajo de programación en modo de usuario (UMS) de la lista de finalización de UMS especificada.

Advertencia

A partir de Windows 11, no se admite la programación en modo de usuario. Todas las llamadas producen el error ERROR_NOT_SUPPORTED.

Sintaxis

BOOL DequeueUmsCompletionListItems(
  [in]  PUMS_COMPLETION_LIST UmsCompletionList,
  [in]  DWORD                WaitTimeOut,
  [out] PUMS_CONTEXT         *UmsThreadList
);

Parámetros

[in] UmsCompletionList

Puntero a la lista de finalización desde la que se van a recuperar subprocesos de trabajo.

[in] WaitTimeOut

Intervalo de tiempo de espera para la operación de recuperación, en milisegundos. La función devuelve si transcurre el intervalo, incluso si no hay subprocesos de trabajo en cola en la lista de finalización.

Si el parámetro WaitTimeOut es cero, la lista de finalización se comprueba si hay subprocesos de trabajo disponibles sin esperar a que los subprocesos de trabajo estén disponibles. Si el parámetro WaitTimeOut es INFINITE, el intervalo de tiempo de espera de la función nunca transcurre. Sin embargo, esto no se recomienda porque hace que la función se bloquee hasta que uno o varios subprocesos de trabajo estén disponibles.

[out] UmsThreadList

Puntero a una variable UMS_CONTEXT. En la salida, este parámetro recibe un puntero al primer contexto de subproceso de UMS en una lista de contextos de subprocesos de UMS.

Si no hay subprocesos de trabajo disponibles antes del tiempo de espera especificado por el parámetro WaitTimeOut , este parámetro se establece en NULL.

Valor devuelto

Si la función se ejecuta correctamente, devuelve un valor distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. Entre los valores de error posibles se incluyen los siguientes.

Código devuelto Descripción
ERROR_TIMEOUT
No hay subprocesos disponibles antes de que haya transcurrido el intervalo de tiempo de espera especificado.
ERROR_NOT_SUPPORTED
No se admite UMS.

Comentarios

El sistema pone en cola un subproceso de trabajo de UMS en una lista de finalización cuando se crea el subproceso de trabajo o cuando se desbloquea un subproceso de trabajo bloqueado previamente. La función DequeueUmsCompletionListItems recupera un puntero a una lista de todos los contextos de subproceso de la lista de finalización especificada. La función GetNextUmsListItem se puede usar para quitar los contextos de subprocesos de UMS de la lista en la propia cola de subprocesos listos del programador. El programador es responsable de seleccionar subprocesos para ejecutarse en función de las prioridades elegidas por la aplicación.

No ejecute subprocesos de UMS directamente desde la lista proporcionada por DequeueUmsCompletionListItems o ejecute un subproceso transferido de la lista a la cola de subprocesos lista antes de que la lista esté completamente vacía. Esto puede provocar un comportamiento imprevisible en la aplicación.

Si más de un llamador intenta recuperar subprocesos de una lista de finalización compartida, solo el primer llamador recupera los subprocesos. Para los autores de llamadas posteriores, la función DequeueUmsCompletionListItems devuelve correctamente, pero el parámetro UmsThreadList se establece en NULL.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 (solo 64 bits) [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll
Conjunto de API api-ms-win-core-ums-l1-1-0 (introducido en Windows 7)

Consulte también

GetNextUmsListItem