Share via


DequeueUmsCompletionListItems 함수(winbase.h)

지정된 UMS 완료 목록에서 UMS(사용자 모드 예약) 작업자 스레드를 검색합니다.

경고

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

구문

BOOL DequeueUmsCompletionListItems(
  [in]  PUMS_COMPLETION_LIST UmsCompletionList,
  [in]  DWORD                WaitTimeOut,
  [out] PUMS_CONTEXT         *UmsThreadList
);

매개 변수

[in] UmsCompletionList

작업자 스레드를 검색할 완료 목록에 대한 포인터입니다.

[in] WaitTimeOut

검색 작업의 제한 시간 간격(밀리초)입니다. 함수는 완료 목록에 큐에 대기 중인 작업자 스레드가 없더라도 간격이 경과하면 를 반환합니다.

WaitTimeOut 매개 변수가 0이면 작업자 스레드를 사용할 수 있게 될 때까지 기다리지 않고 사용 가능한 작업자 스레드에 대한 완료 목록이 확인됩니다. WaitTimeOut 매개 변수가 INFINITE이면 함수의 제한 시간 간격이 경과하지 않습니다. 그러나 하나 이상의 작업자 스레드를 사용할 수 있게 될 때까지 함수가 차단되므로 권장되지 않습니다.

[out] UmsThreadList

UMS_CONTEXT 변수에 대한 포인터입니다. 출력 시 이 매개 변수는 UMS 스레드 컨텍스트 목록에서 첫 번째 UMS 스레드 컨텍스트에 대한 포인터를 받습니다.

WaitTimeOut 매개 변수로 지정된 제한 시간 전에 작업자 스레드를 사용할 수 없는 경우 이 매개 변수는 NULL로 설정됩니다.

반환 값

함수가 성공하면 0이 아닌 값을 반환합니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다. 가능한 오류 값은 다음과 같습니다.

반환 코드 설명
ERROR_TIMEOUT
지정된 제한 시간 간격이 경과하기 전에 스레드를 사용할 수 없습니다.
ERROR_NOT_SUPPORTED
UMS는 지원되지 않습니다.

설명

시스템은 작업자 스레드가 만들어지거나 이전에 차단된 작업자 스레드가 차단 해제될 때 완료 목록에 UMS 작업자 스레드를 큐에 대기합니다. DequeueUmsCompletionListItems 함수는 지정된 완료 목록의 모든 스레드 컨텍스트 목록에 대한 포인터를 검색합니다. GetNextUmsListItem 함수를 사용하여 목록에서 UMS 스레드 컨텍스트를 스케줄러의 준비 스레드 큐로 팝업할 수 있습니다. 스케줄러는 애플리케이션에서 선택한 우선 순위에 따라 실행할 스레드를 선택합니다.

DequeueUmsCompletionListItems에서 제공하는 목록에서 직접 UMS 스레드를 실행하거나 목록이 완전히 비어 있기 전에 목록에서 준비 스레드 큐로 전송된 스레드를 실행하지 마세요. 이로 인해 애플리케이션에서 예측할 수 없는 동작이 발생할 수 있습니다.

둘 이상의 호출자가 공유 완료 목록에서 스레드를 검색하려고 하면 첫 번째 호출자만 스레드를 검색합니다. 후속 호출자의 경우 DequeueUmsCompletionListItems 함수는 성공을 반환하지만 UmsThreadList 매개 변수는 NULL로 설정됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 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에서 도입)

추가 정보

GetNextUmsListItem