Share via


UnregisterWaitEx 함수(threadpoollegacyapiset.h)

RegisterWaitForSingleObject 함수에서 발급한 등록된 대기 작업을 취소합니다.

구문

BOOL UnregisterWaitEx(
  [in]           HANDLE WaitHandle,
  [in, optional] HANDLE CompletionEvent
);

매개 변수

[in] WaitHandle

대기 핸들입니다. 이 핸들은 RegisterWaitForSingleObject 함수에 의해 반환됩니다.

[in, optional] CompletionEvent

대기 작업이 등록 취소되었을 때 신호를 받을 이벤트 개체에 대한 핸들입니다. 이 매개 변수는 NULL일 수 있습니다.

이 매개 변수가 INVALID_HANDLE_VALUE 경우 함수는 반환하기 전에 모든 콜백 함수가 완료되기를 기다립니다.

이 매개 변수가 NULL이면 함수는 삭제할 타이머를 표시하고 즉시 반환합니다. 그러나 대부분의 호출자는 필요한 정리를 수행할 수 있도록 콜백 함수가 완료될 때까지 기다려야 합니다.

호출자가 이 이벤트를 제공하고 함수가 성공하거나 함수가 ERROR_IO_PENDING 실패하는 경우 신호를 보낼 때까지 이벤트를 닫지 마세요.

반환 값

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

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

설명

동일한 대기 작업에 대한 콜백 함수 내에서 UnregisterWaitEx 에 대한 차단 호출을 수행할 수 없습니다. 그렇지 않으면 콜백이 완료될 때까지 대기합니다. 일반적으로 UnregisterWaitEx 에 대한 차단 호출은 현재 스레드와 콜백 간에 종속성을 생성하므로 다른 대기 작업에서 차단 등록 취소 호출을 수행하려면 콜백 함수가 서로 종속되지 않고 두 번째 대기 작업에서 첫 번째 작업에서 차단 등록 취소 호출도 수행하지 않도록 해야 합니다.

영구 스레드에서 UnregisterWaitEx 를 차단하는 경우 주의해야 합니다. 등록되지 않은 대기 작업이 WT_EXECUTEINPERSISTENTTHREAD 만들어지면 교착 상태가 발생할 수 있습니다.

UnregisterWaitEx에 대한 비 차단 호출을 수행한 후에는 WaitHandle과 연결된 새 콜백 함수를 큐에 대기할 수 없습니다. 그러나 작업자 스레드에 이미 큐에 대기 중인 콜백 함수가 보류 중일 수 있습니다.

일부 조건에서는 CompletionEventNULL인 경우 함수가 ERROR_IO_PENDING 실패합니다. 이는 미해결 콜백 함수가 있음을 나타냅니다. 이러한 콜백은 실행되거나 실행 중간에 있습니다.

CompletionEvent가 호출자가 제공하는 이벤트에 대한 핸들인 경우 함수가 성공하거나, ERROR_IO_PENDING 실패하거나, 다른 오류 코드로 실패할 수 있습니다. 함수가 성공하거나 ERROR_IO_PENDING 함께 함수가 실패하는 경우 호출자는 이벤트가 이벤트를 닫도록 신호를 보낼 때까지 항상 기다려야 합니다. 함수가 다른 오류 코드로 실패하는 경우 이벤트를 종료하라는 신호가 표시될 때까지 기다릴 필요가 없습니다.

Windows XP: CompletionEvent가 호출자가 제공하는 이벤트에 대한 핸들이고 함수가 ERROR_IO_PENDING 실패하는 경우 호출자는 이벤트가 이벤트를 닫도록 신호를 보낼 때까지 기다려야 합니다. 이 동작은 Windows Vista부터 변경되었습니다.

이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 0x0500 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 threadpoollegacyapiset.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

RegisterWaitForSingleObject

동기화 함수

스레드 풀링