Share via


RTL_UMS_SCHEDULER_ENTRY_POINT função de retorno de chamada (winnt.h)

A função de ponto de entrada do agendador UMS (agendamento do modo de usuário) definido pelo aplicativo associado a uma lista de conclusão da UMS.

O tipo PUMS_SCHEDULER_ENTRY_POINT define um ponteiro para essa função. UmsSchedulerProc é um espaço reservado para o nome da função definida pelo aplicativo.

Sintaxe

RTL_UMS_SCHEDULER_ENTRY_POINT RtlUmsSchedulerEntryPoint;

void RtlUmsSchedulerEntryPoint(
  [in] RTL_UMS_SCHEDULER_REASON Reason,
  [in] ULONG_PTR ActivationPayload,
  [in] PVOID SchedulerParam
)
{...}

Parâmetros

[in] Reason

O motivo pelo qual o ponto de entrada do agendador está sendo chamado. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
UmsSchedulerStartup
0
Um thread do agendador UMS foi criado. O ponto de entrada é chamado com esse motivo uma vez cada vez que EnterUmsSchedulingMode é chamado.
UmsSchedulerThreadBlocked
1
Um thread de trabalho da UMS bloqueado.
UmsSchedulerThreadYield
2
Um thread de trabalho umS em execução rendeu controle chamando a função UmsThreadYield .

[in] ActivationPayload

Se o parâmetro Reason for UmsSchedulerStartup, esse parâmetro será NULL.

Se o parâmetro Reason for UmsSchedulerThreadBlocked, o bit 0 desse parâmetro indicará o tipo de atividade que estava sendo atendida quando o thread de trabalho da UMS foi bloqueado.

Valor Significado
0
O thread bloqueado em uma armadilha (por exemplo, uma falha de página dura) ou uma interrupção (por exemplo, uma chamada de procedimento assíncrono).
1
O thread bloqueado em uma chamada do sistema.
 

Se o parâmetro Reason for UmsSchedulerThreadYield, esse parâmetro será um ponteiro para o contexto de thread UMS do thread de trabalho da UMS que rendeu.

[in] SchedulerParam

Se o parâmetro Reason for UmsSchedulerStartup, esse parâmetro será o membro SchedulerParam da estrutura UMS_SCHEDULER_STARTUP_INFO passada para a função EnterUmsSchedulingMode que disparou a chamada do ponto de entrada.

Se o parâmetro Reason for UmsSchedulerThreadYield , esse parâmetro será o parâmetro SchedulerParam passado para a função UmsThreadYield que disparou a chamada do ponto de entrada.

Se o parâmetro Reason for UmsSchedulerThreadBlocked, esse parâmetro será NULL.

Retornar valor

Nenhum

Comentários

O tipo de ponteiro de função UmsSchedulerProc é definido como PUMS_SCHEDULER_ENTRY_POINT no WinBase.h. O tipo de função subjacente é definido como RTL_UMS_SCHEDULER_ENTRY_POINT no WinNT.h

Cada thread do agendador UMS tem uma função de ponto de entrada UmsSchedulerProc associada especificada quando o thread chama a função EnterUmsSchedulingMode . O sistema chama a função de ponto de entrada do agendador com um motivo de UmsSchedulerStartup quando o thread do agendador é convertido para UMS.

Posteriormente, quando um thread de trabalho da UMS em execução no thread do agendador produz ou bloqueia, o sistema chama a função de ponto de entrada do thread do agendador com um ponteiro para o contexto de thread umS do thread de trabalho.

O agendador do aplicativo é responsável por selecionar o próximo thread de trabalho da UMS a ser executado. O agendador implementa todas as políticas que influenciam a execução de seus threads UMS, incluindo afinidade de processador e prioridade de thread. Por exemplo, um agendador pode dar prioridade a threads com uso intensivo de E/S ou pode executar threads por 1 a 0. Essa lógica pode ser implementada na função de ponto de entrada do agendador ou em outro lugar no aplicativo.

Quando um thread de trabalho umS bloqueado fica desbloqueado, o sistema enfileira o thread desbloqueado para a lista de conclusão associada e sinaliza o evento de lista de conclusão. Para recuperar threads de trabalho ums da lista de conclusão, use a função DequeueUmsCompletionListItems .

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 winnt.h (inclua WinBase.h, Windows.h)

Confira também

DequeueUmsCompletionListItems

EnterUmsSchedulingMode

UmsThreadYield