Função DequeueUmsCompletionListItems (winbase.h)

Recupera threads de trabalho ums (agendamento de modo de usuário) da lista de conclusão de UMS especificada.

Aviso

A partir de Windows 11, não há suporte para o agendamento no modo de usuário. Todas as chamadas falham com o erro ERROR_NOT_SUPPORTED.

Sintaxe

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

Parâmetros

[in] UmsCompletionList

Um ponteiro para a lista de conclusão da qual recuperar threads de trabalho.

[in] WaitTimeOut

O intervalo de tempo limite para a operação de recuperação, em milissegundos. A função retornará se o intervalo decorrer, mesmo que nenhum thread de trabalho esteja na fila para a lista de conclusão.

Se o parâmetro WaitTimeOut for zero, a lista de conclusão será verificada quanto aos threads de trabalho disponíveis sem esperar que os threads de trabalho fiquem disponíveis. Se o parâmetro WaitTimeOut for INFINITE, o intervalo de tempo limite da função nunca será decorrido. No entanto, isso não é recomendado porque faz com que a função seja bloqueada até que um ou mais threads de trabalho fiquem disponíveis.

[out] UmsThreadList

Um ponteiro para uma variável UMS_CONTEXT. Na saída, esse parâmetro recebe um ponteiro para o primeiro contexto de thread UMS em uma lista de contextos de thread UMS.

Se nenhum thread de trabalho estiver disponível antes do tempo limite especificado pelo parâmetro WaitTimeOut , esse parâmetro será definido como NULL.

Retornar valor

Se a função for bem-sucedida, ela retornará um valor diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError. Os valores de erro possíveis incluem o seguinte.

Código de retorno Descrição
ERROR_TIMEOUT
Nenhum thread ficou disponível antes do intervalo de tempo limite especificado ter decorrido.
ERROR_NOT_SUPPORTED
Não há suporte para UMS.

Comentários

O sistema enfileira um thread de trabalho umS para uma lista de conclusão quando o thread de trabalho é criado ou quando um thread de trabalho bloqueado anteriormente é desbloqueado. A função DequeueUmsCompletionListItems recupera um ponteiro para uma lista de todos os contextos de thread na lista de conclusão especificada. A função GetNextUmsListItem pode ser usada para colocar os contextos de thread UMS fora da lista na própria fila de threads pronta do agendador. O agendador é responsável por selecionar threads a serem executados com base nas prioridades escolhidas pelo aplicativo.

Não execute threads UMS diretamente da lista fornecida por DequeueUmsCompletionListItems ou execute um thread transferido da lista para a fila de threads pronta antes que a lista esteja completamente vazia. Isso pode causar um comportamento imprevisível no aplicativo.

Se mais de um chamador tentar recuperar threads de uma lista de conclusão compartilhada, somente o primeiro chamador recuperará os threads. Para chamadores subsequentes, a função DequeueUmsCompletionListItems retorna êxito, mas o parâmetro UmsThreadList é definido como NULL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 (somente 64 bits) [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbase.h (incluir Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll
Conjunto de APIs api-ms-win-core-ums-l1-1-0 (introduzido no Windows 7)

Confira também

GetNextUmsListItem