RTL_UMS_SCHEDULER_ENTRY_POINT funzione di callback (winnt.h)
Funzione di ingresso del punto di ingresso dell'utilità di pianificazione definita dall'utente (UMS) definita dall'applicazione associata a un elenco di completamento di UMS.
Il tipo PUMS_SCHEDULER_ENTRY_POINT definisce un puntatore a questa funzione. UmsSchedulerProc è un segnaposto per il nome della funzione definita dall'applicazione.
Sintassi
RTL_UMS_SCHEDULER_ENTRY_POINT RtlUmsSchedulerEntryPoint;
void RtlUmsSchedulerEntryPoint(
[in] RTL_UMS_SCHEDULER_REASON Reason,
[in] ULONG_PTR ActivationPayload,
[in] PVOID SchedulerParam
)
{...}
Parametri
[in] Reason
Motivo per cui viene chiamato il punto di ingresso dell'utilità di pianificazione. Questo parametro può avere uno dei valori seguenti.
Valore | Significato |
---|---|
|
È stato creato un thread dell'utilità di pianificazione UMS. Il punto di ingresso viene chiamato con questo motivo una volta ogni volta che enterUmsSchedulingMode viene chiamato. |
|
Thread di lavoro UMS bloccato. |
|
Un thread di lavoro UMS in esecuzione ha restituito il controllo chiamando la funzione UmsThreadYield . |
[in] ActivationPayload
Se il parametro Reason è UmsSchedulerStartup, questo parametro è NULL.
Se il parametro Reason è UmsSchedulerThreadBlocked, bit 0 di questo parametro indica il tipo di attività di cui è stato eseguito il servizio quando il thread di lavoro UMS è bloccato.
Se il parametro Reason è UmsSchedulerThreadYield, questo parametro è un puntatore al contesto del thread UMS del thread UMS che ha restituito.
[in] SchedulerParam
Se il parametro Reason è UmsSchedulerStartup, questo parametro è il membro SchedulerParam della struttura UMS_SCHEDULER_STARTUP_INFO passato alla funzione EnterUmsSchedulingMode che ha attivato la chiamata al punto di ingresso.
Se il parametro Reason è UmsSchedulerThreadYield questo parametro è il parametro SchedulerParam passato alla funzione UmsThreadYield che ha attivato la chiamata al punto di ingresso.
Se il parametro Reason è UmsSchedulerThreadBlocked, questo parametro è NULL.
Valore restituito
nessuno
Osservazioni
Il tipo di puntatore alla funzione UmsSchedulerProc viene definito come PUMS_SCHEDULER_ENTRY_POINT in WinBase.h. Il tipo di funzione sottostante viene definito come RTL_UMS_SCHEDULER_ENTRY_POINT in WinNT.h
Ogni thread dell'utilità di pianificazione UMS ha una funzione di ingresso UmsSchedulerProc specificata quando il thread chiama la funzione EnterUmsSchedulingMode . Il sistema chiama la funzione del punto di ingresso dell'utilità di pianificazione con un motivo di UmsSchedulerStartup quando il thread dell'utilità di pianificazione viene convertito per UMS.
Successivamente, quando un thread di lavoro UMS in esecuzione nel thread dell'utilità di pianificazione restituisce o blocca, il sistema chiama la funzione del punto di ingresso del thread dell'utilità di pianificazione con un puntatore al contesto del thread UMS del thread di lavoro.
L'utilità di pianificazione dell'applicazione è responsabile della selezione del thread di lavoro UMS successivo da eseguire. L'utilità di pianificazione implementa tutti i criteri che influiscono sull'esecuzione dei thread UMS, inclusi l'affinità del processore e la priorità del thread. Ad esempio, un utilità di pianificazione potrebbe dare priorità ai thread con utilizzo intensivo di I/O oppure potrebbe eseguire thread in base a un primo servizio. Questa logica può essere implementata nella funzione del punto di ingresso dell'utilità di pianificazione o altrove nell'applicazione.
Quando un thread di lavoro UMS bloccato viene sbloccato, il sistema accoda il thread sbloccato all'elenco di completamento associato e segnala l'evento di elenco di completamento. Per recuperare i thread di lavoro UMS dall'elenco di completamento, usare la funzione DequeueUmsCompletionListItems .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 (solo a 64 bit) [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winnt.h (includere WinBase.h, Windows.h) |