Share via


UnregisterWaitEx 함수

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

구문

BOOL WINAPI UnregisterWaitEx(
  _In_     HANDLE WaitHandle,
  _In_opt_ HANDLE CompletionEvent
);

매개 변수

WaitHandle [in]

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

CompletionEvent [in, optional]

대기 작업이 등록 취소되었을 때 신호를 받을 이벤트 개체에 대한 핸들입니다. 이 매개 변수는 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 8 및 Windows Server 2012 Threadpoollegacyapiset.h(Windows.h 포함);
Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP 및 Windows Server 2003의 WinBase.h(Windows.h 포함)
라이브러리
Kernel32.lib
DLL
Kernel32.dll

참고 항목

RegisterWaitForSingleObject

동기화 함수

스레드 풀링