다음을 통해 공유


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 스케줄러 스레드에는 스레드가 EnterUmsSchedulingMode 함수를 호출할 때 지정된 연결된 UmsSchedulerProc 진입점 함수가 있습니다. 스케줄러 스레드가 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