DbgEng — получить вывод команды не через обратные вызовы

Я делаю отдельное приложение отладчика, используя Microsoft DbgEng.
Я хочу открыть 2-й поток, который отправляет команды дополнительному экземпляру IDebugControl, и я хочу получить конкретный вывод для этого вызова метода IDebugControl Execute (и отправить его через соединение tcp).

У меня есть проблема, так как IDebugControl из основного потока также отправляет команды в Execute () и выходные данные могут быть смешаны.
Мне нужен второй поток, потому что как только он выполнит команду типа «g» (go), он вызовет WaitForEvent (), и я не смогу получить дополнительную информацию о цели, пока не произойдет событие.

Мне нужно решение для этого.

Второй IDebugControl используется для операций, которые отправляют запросы только на данные, такие как строки разборки, дамп памяти …
Интересно, смогу ли я сделать второй IDebugClient и прикрепить его к уже открытому отлаженному процессу, и тогда проблема будет решена, потому что я могу добавить к нему другие обратные вызовы.

Есть ли решение для меня?

1

Решение

Я думаю, что вы не должны вызывать какие-либо команды для отладки движка, пока он ожидает событий, кроме IDebugControl :: SetInterrupt.

В любом случае, если вы хотите использовать два потока, вы можете зарегистрировать интерфейс обратного вызова IDebugOutputCallbacks и обрабатывать вывод с любым видом мьютекса.

2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector