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

呼叫排程器進入點的原因。 此參數可以是下列其中一個值。

意義
UmsSchedulerStartup
0
已建立UMS排程器線程。 每次呼叫 EnterUmsSchedulingMode 時,都會以這個原因呼叫進入點。
UmsSchedulerThreadBlocked
1
已封鎖UMS背景工作線程。
UmsSchedulerThreadYield
2
執行中的UMS背景工作線程會藉由呼叫 UmsThreadYield函式 來產生控制權。

[in] ActivationPayload

如果 Reason 參數為 UmsSchedulerStartup,則此參數為 NULL。

如果 Reason 參數為 UmsSchedulerThreadBlocked,則此參數的位 0 表示 UMS 背景工作線程封鎖時所服務的活動類型。

意義
0
例如,在陷阱 (上封鎖的線程、硬式頁面錯誤) 或中斷 (例如異步過程調用) 。
1
系統呼叫上封鎖的線程。
 

如果 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)

另請參閱

DequeueUmsCompletionListItems

EnterUmsSchedulingMode

UmsThreadYield