RTL_UMS_SCHEDULER_ENTRY_POINT回呼函式 (winnt.h)
與 UMS 完成清單相關聯的應用程式定義使用者模式排程 (UMS) 排程器進入點函式。
PUMS_SCHEDULER_ENTRY_POINT類型會定義此函式的指標。 UmsSchedulerProc 是應用程式定義函數名稱的佔位元。
語法
RTL_UMS_SCHEDULER_ENTRY_POINT RtlUmsSchedulerEntryPoint;
void RtlUmsSchedulerEntryPoint(
[in] RTL_UMS_SCHEDULER_REASON Reason,
[in] ULONG_PTR ActivationPayload,
[in] PVOID SchedulerParam
)
{...}
參數
[in] Reason
呼叫排程器進入點的原因。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
已建立UMS排程器線程。 每次呼叫 EnterUmsSchedulingMode 時,都會以這個原因呼叫進入點。 |
|
已封鎖UMS背景工作線程。 |
|
執行中的UMS背景工作線程會藉由呼叫 UmsThreadYield函式 來產生控制權。 |
[in] ActivationPayload
如果 Reason 參數為 UmsSchedulerStartup,則此參數為 NULL。
如果 Reason 參數為 UmsSchedulerThreadBlocked,則此參數的位 0 表示 UMS 背景工作線程封鎖時所服務的活動類型。
值 | 意義 |
---|---|
|
例如,在陷阱 (上封鎖的線程、硬式頁面錯誤) 或中斷 (例如異步過程調用) 。 |
|
系統呼叫上封鎖的線程。 |
如果 Reason 參數為 UmsSchedulerThreadYield,則此參數是產生之 UMS 背景工作線程之 UMS 線程內容的指標。
[in] SchedulerParam
如果 Reason 參數為 UmsSchedulerStartup,則此參數是傳遞至觸發進入點呼叫之 EnterUmsSchedulingMode 函式之UMS_SCHEDULER_STARTUP_INFO結構的 SchedulerParam 成員。
如果 Reason 參數為 UmsSchedulerThreadYield ,則此參數是傳遞至觸發進入點呼叫之 UmsThreadYield 函式的 SchedulerParam 參數。
如果 Reason 參數為 UmsSchedulerThreadBlocked,則此參數為 NULL。
傳回值
無
備註
UmsSchedulerProc 函式指標類型定義為 WinBase.h 中的PUMS_SCHEDULER_ENTRY_POINT。 基礎函式類型在 WinNT.h 中定義為RTL_UMS_SCHEDULER_ENTRY_POINT
每個 UMS 排程器線程都有相關聯的 UmsSchedulerProc 進入點函式,當線程呼叫 EnterUmsSchedulingMode 函式時指定。 當排程器線程針對UMS轉換時,系統會呼叫排程器進入點函式,原因為 UmsSchedulerStartup 。
接著,當在排程器線程上執行的UMS背景工作線程產生或封鎖時,系統會使用背景工作線程UMS線程內容的指標呼叫排程器線程的進入點函式。
應用程式的排程器負責選取下一個要執行的UMS背景工作線程。 排程器會實作影響其UMS線程執行的所有原則,包括處理器親和性和線程優先順序。 例如,排程器可能會優先處理 I/O 密集線程,或可能會以先出先用的線程執行線程。 此邏輯可以在排程器進入點函式或應用程式中的其他位置實作。
當封鎖的 UMS 背景工作線程解除封鎖時,系統會將解除封鎖的線程排入相關聯的完成清單,並發出完成清單事件的訊號。 若要從完成清單中擷取 UMS 背景工作線程,請使用 DequeueUmsCompletionListItems 函式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 僅限 Windows 7 (64 位) [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winnt.h (包括 WinBase.h、Windows.h) |