다음을 통해 공유


콜백 개체 사용

엔진에서 사용하는 인터페이스와 같은 세 가지 콜백 COM이 있습니다. 디버거 확장 및 엔진 또는 대상에 대한 변경 내용을 애플리케이션에 알리기 위한 IDebugEventCallbacks, 입력을 요청하기 위한 IDebugInputCallbacks출력을 보내기 위한 IDebugOutputCallbacks입니다.

콜백 개체는 클라이언트에 등록됩니다. 세 콜백 인터페이스의 각 인스턴스를 각 클라이언트에 등록할 수 있습니다(인터페이스의 유니코드 및 ASCII 버전은 동일한 인터페이스로 계산됨).

클라이언트를 만들 때 엔진은 생성된 스레드를 기억합니다. 엔진은 클라이언트에 등록된 콜백 인스턴스를 호출할 때마다 동일한 스레드를 사용합니다. 스레드가 사용 중인 경우 엔진은 필요한 호출을 큐에 대기합니다. 엔진이 이러한 호출을 할 수 있도록 하려면 클라이언트의 스레드가 유휴 상태일 때마다 DispatchCallbacks 메서드를 호출해야 합니다. ExitDispatch 메서드로 인해 DispatchCallbacks가 반환됩니다. 스레드가 디버거 세션을 시작하는 데 사용된 스레드와 동일한 경우 엔진은 WaitForEvent 메서드 중에 콜백을 호출할 수 있으며 DispatchCallbacks를 호출할 필요가 없습니다.

FlushCallbacks 메서드는 출력 콜백에 버퍼링된 모든 출력을 보내도록 엔진에 지시합니다.

이벤트 콜백 개체

IDebugEventCallbacks 인터페이스는 엔진에서 디버거 확장 및 애플리케이션에 이벤트 및 엔진 및 대상 변경 내용을 알리는 데 사용됩니다. SetEventCallbacks를 사용하여 IDebugEventCallbacks 구현을 클라이언트에 등록할 수 있습니다. 클라이언트에 등록된 현재 구현은 GetEventCallbacks를 사용하여 찾을 수 있습니다. GetNumberEventCallbacks를 사용하여 모든 클라이언트에 등록된 이벤트 콜백 수를 찾을 수 있습니다.

엔진이 이벤트를 관리하는 방법에 대한 자세한 내용은 이벤트 모니터링을 참조 하세요.

입력 콜백 개체

IDebugInputCallbacks 인터페이스는 엔진에서 디버거 확장 및 애플리케이션의 입력을 요청하는 데 사용됩니다. SetInputCallbacks를 사용하여 IDebugInputCallbacks 구현을 클라이언트에 등록할 수 있습니다. 클라이언트에 등록된 현재 구현은 GetInputCallbacks를 사용하여 찾을 수 있습니다. 모든 클라이언트에 등록된 입력 콜백 수는 GetNumberInputCallbacks를 사용하여 찾을 수 있습니다.

엔진이 입력을 관리하는 방법에 대한 자세한 내용은 입력 및 출력을 참조하세요.

출력 콜백 개체

IDebugOutputCallbacks 인터페이스는 엔진에서 디버거 확장 및 애플리케이션에 출력을 보내는 데 사용됩니다. SetOutputCallbacks를 사용하여 IDebugOutputCallbacks 구현을 클라이언트에 등록할 수 있습니다. 클라이언트에 등록된 현재 구현은 GetOutputCallbacks를 사용하여 찾을 수 있습니다. GetNumberOutputCallbacks를 사용하여 모든 클라이언트에 등록된 출력 콜백 수를 찾을 수 있습니다.

엔진이 출력을 관리하는 방법에 대한 자세한 내용은 입력 및 출력을 참조하세요.

참고 COM 개체의 일반적인 경우처럼 엔진은 클라이언트에 등록될 때 콜백 COM 개체에서 IUnknown::AddRef를 호출하고, 개체를 바꾸거나 클라이언트를 삭제할 때 IUnknown::Release를 호출합니다.