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 |
---|---|
|
Um thread do agendador UMS foi criado. O ponto de entrada é chamado com esse motivo uma vez cada vez que EnterUmsSchedulingMode é chamado. |
|
Um thread de trabalho da UMS bloqueado. |
|
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.
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) |