다음을 통해 공유


IDebugControl3::WaitForEvent 메서드(dbgeng.h)

WaitForEvent 메서드는 디버거 엔진 애플리케이션에 침입하는 이벤트를 기다립니다.

구문

HRESULT WaitForEvent(
  [in] ULONG Flags,
  [in] ULONG Timeout
);

매개 변수

[in] Flags

0으로 설정됩니다. 현재 이 매개 변수에 사용할 수 있는 플래그는 없습니다.

[in] Timeout

이 메서드가 반환되기 전에 대기할 시간(밀리초)을 지정합니다. Timeout이 INFINITE이면 디버거 엔진 애플리케이션에 침입하는 이벤트가 발생하거나 종료 인터럽트를 실행할 때까지 이 메서드가 반환되지 않습니다. 현재 세션에 라이브 커널 대상이 있는 경우 시간 제한을 INFINITE로 설정해야 합니다.

반환 값

이 메서드는 다른 오류 값을 반환할 수 있으며 위의 오류 값에는 추가 의미가 있을 수 있습니다. 자세한 내용은 반환 값을 참조하세요.

반환 코드 Description
S_OK
메서드를 성공적으로 수행했습니다.
S_FALSE
제한 시간이 만료되었습니다.
E_PENDING
종료 인터럽트를 실행했습니다. 대상을 사용할 수 없습니다.
E_UNEXPECTED
입력에 대한 미해결 요청이 있거나 대상 중 어느 것도 이벤트를 생성할 수 없습니다.
E_FAIL
엔진이 이미 이벤트를 기다리고 있습니다.

설명

메서드는 디버거 세션을 시작한 스레드에서만 호출할 수 있습니다.

이벤트가 발생하면 디버거 엔진 이 이벤트를 처리하고 이벤트 콜백을 호출합니다. 이러한 콜백 중 하나가 이벤트가 디버거 엔진 애플리케이션에 침입해야 한다고 나타내는 경우(DEBUG_STATUS_BREAK 반환) 이 메서드는 를 반환합니다. 그렇지 않으면 이벤트를 계속 대기합니다. 이벤트 필터는 이벤트가 디버거 엔진 애플리케이션에 침입되도록 지정할 수도 있습니다. 이벤트 필터에 대한 자세한 내용은 예외 및 이벤트 제어를 참조하세요.

이 메서드는 재진입성이 아닙니다. 호출되면 반환될 때까지 클라이언트에서 다시 호출할 수 없습니다. 특히 콜백에서 실행되는 확장 및 명령을 포함하여 이벤트 콜백에서 호출할 수 없습니다.

이벤트를 생성할 수 있는 대상이 없는 경우(예: 모든 대상이 종료됨) 이 메서드는 현재 세션을 종료하고 대상을 삭제한 다음 E_UNEXPECTED 반환합니다.

상수 INFINITE는 Winbase.h에 정의됩니다.

WaitForEvent를 사용하여 디버거 애플리케이션 및 대상의 실행 흐름을 제어하는 방법에 대한 자세한 내용은 디버깅 세션 및 실행 모델을 참조하세요. 이벤트 콜백에 대한 자세한 내용은 이벤트 모니터링을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 dbgeng.h(Dbgeng.h, Winbase.h 포함)

추가 정보

IDebugControl

IDebugControl2

IDebugControl3