Verwenden von Rückrufobjekten

Es gibt drei Callback-COM-ähnliche Schnittstellen, die von der Engine verwendet werden: IDebugEventCallbacks zum Benachrichtigen von Debuggererweiterungen und Anwendungen über Änderungen an der Engine oder dem Ziel, IDebugInputCallbacks zum Anfordern von Eingaben und IDebugOutputCallbacks zum Senden der Ausgabe.

Rückrufobjekte werden bei Clients registriert. Höchstens ein instance jeder der drei Rückrufschnittstellen kann bei jedem Client registriert werden (die Unicode- und ASCII-Versionen einer Schnittstelle zählen als dieselbe Schnittstelle).

Wenn ein Client erstellt wird, merkt sich die Engine den Thread, in dem er erstellt wurde. Die Engine verwendet denselben Thread, wenn sie einen Rückruf aufruft, instance beim Client registriert ist. Wenn der Thread verwendet wird, stellt die Engine die Aufrufe in die Warteschlange, die sie tätigen muss. Damit die Engine diese Aufrufe tätigen kann, sollte die DispatchCallbacks-Methode aufgerufen werden, wenn sich der Thread eines Clients im Leerlauf befindet. Die Methode ExitDispatch bewirkt, dass DispatchCallbacks zurückgegeben werden. Wenn der Thread derselbe Thread ist, der zum Starten der Debuggersitzung verwendet wurde, kann das Modul die Rückrufaufrufe während der WaitForEvent-Methode ausführen, und DispatchCallbacks muss nicht aufgerufen werden.

Die Methode FlushCallbacks weist das Modul an, alle gepufferten Ausgaben an die Ausgaberückrufe zu senden.

Ereignisrückrufobjekte

Die IDebugEventCallbacks-Schnittstelle wird von der Engine verwendet, um die Debuggererweiterungen und -anwendungen über Ereignisse und Änderungen an der Engine und dem Ziel zu benachrichtigen. Eine Implementierung von IDebugEventCallbacks kann mithilfe von SetEventCallbacks bei einem Client registriert werden. Die aktuelle Implementierung, die bei einem Client registriert ist, kann mithilfe von GetEventCallbacks gefunden werden. Die Anzahl der auf allen Clients registrierten Ereignisrückrufe kann mithilfe von GetNumberEventCallbacks ermittelt werden.

Ausführliche Informationen zur Verwaltung von Ereignissen durch das Modul finden Sie unter Überwachen von Ereignissen.

Eingaberückrufobjekte

Die IDebugInputCallbacks-Schnittstelle wird von der Engine verwendet, um Eingaben von Debuggererweiterungen und -anwendungen anzufordern. Eine Implementierung von IDebugInputCallbacks kann mithilfe von SetInputCallbacks bei einem Client registriert werden. Die aktuelle Implementierung, die bei einem Client registriert ist, kann mithilfe von GetInputCallbacks gefunden werden. Die Anzahl der auf allen Clients registrierten Eingaberückrufe kann mithilfe von GetNumberInputCallbacks ermittelt werden.

Ausführliche Informationen zur Verwaltung von Eingaben durch das Modul finden Sie unter Eingabe und Ausgabe.

Ausgaberückrufobjekte

Die IDebugOutputCallbacks-Schnittstelle wird von der Engine verwendet, um Ausgabe an die Debuggererweiterungen und -anwendungen zu senden. Eine Implementierung von IDebugOutputCallbacks kann mithilfe von SetOutputCallbacks bei einem Client registriert werden. Die aktuelle Implementierung, die bei einem Client registriert ist, kann mithilfe von GetOutputCallbacks gefunden werden. Die Anzahl der auf allen Clients registrierten Ausgaberückrufe kann mithilfe von GetNumberOutputCallbacks ermittelt werden.

Ausführliche Informationen dazu, wie die Engine die Ausgabe verwaltet, finden Sie unter Eingabe und Ausgabe.

Hinweis Wie bei COM-Objekten üblich, ruft die Engine IUnknown::AddRef für ein COM-Rückrufobjekt auf, wenn es bei einem Client registriert ist, und IUnknown::Release , wenn das Objekt ersetzt oder der Client gelöscht wird.