다음을 통해 공유


ExecuteUmsThread 함수(winbase.h)

지정된 UMS 작업자 스레드를 실행합니다.

경고

Windows 11 현재 사용자 모드 예약은 지원되지 않습니다. 오류로 모든 호출이 실패합니다 ERROR_NOT_SUPPORTED.

구문

BOOL ExecuteUmsThread(
  [in, out] PUMS_CONTEXT UmsThread
);

매개 변수

[in, out] UmsThread

실행할 작업자 스레드의 UMS 스레드 컨텍스트에 대한 포인터입니다.

반환 값

함수가 성공하면 값을 반환하지 않습니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다. 가능한 오류 코드에는 다음이 포함됩니다.

반환 코드 설명
ERROR_RETRY
지정된 UMS 작업자 스레드가 시스템에 의해 일시적으로 잠깁니다. 호출자는 작업을 다시 시도할 수 있습니다.
ERROR_NOT_SUPPORTED
UMS는 지원되지 않습니다.

설명

ExecuteUmsThread 함수는 작업자 스레드를 실행할 수 있도록 지정된 UMS 작업자 스레드의 상태를 호출하는 UMS 스케줄러 스레드의 상태에 로드합니다. 작업자 스레드는 UmsThreadYield 함수, 블록 또는 종료를 호출하여 생성될 때까지 실행됩니다.

작업자 스레드가 생성되거나 차단되면 시스템은 스케줄러 스레드의 UmsSchedulerProc 진입점 함수를 호출합니다. 이전에 차단된 작업자 스레드가 차단 해제되면 시스템은 작업자 스레드를 만들 때 UpdateProcThreadAttribute 함수로 지정된 완료 목록으로 작업자 스레드를 큐에 대기합니다.

ExecuteUmsThread 함수는 오류가 발생하지 않는 한 반환되지 않습니다. 함수가 ERROR_RETRY 반환하면 오류가 일시적이며 작업을 다시 시도 할 수 있습니다.

함수가 ERROR_RETRY 이외의 오류를 반환하는 경우 애플리케이션의 스케줄러는 각각 UmsThreadIsSuspended 또는 UmsThreadIsTerminated를 사용하여 QueryUmsThreadInformation을 호출하여 스레드가 일시 중단되거나 종료되는지 여부를 검사 합니다. 다른 가능한 오류로는 UMS 스케줄러 스레드가 아닌 스레드에서 함수를 호출하거나, 잘못된 UMS 작업자 스레드 컨텍스트를 전달하거나, 다른 스케줄러 스레드에서 이미 실행 중인 작업자 스레드를 지정하는 작업이 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7(64비트만 해당) [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll
API 세트 api-ms-win-core-ums-l1-1-0(Windows 7에서 도입)

추가 정보

UmsSchedulerProc

UmsThreadYield

UpdateProcThreadAttribute