Я надеялся использовать для этого обратный вызов ChangeDebuggeeState .
Я написал свой собственный класс MyCallbacks, реализующий интерфейс IDebugEventCallbacksWide. Затем я использовал его в SetEventCallbacksWide из обратного вызова DebugExtensionInitialize, как такового:
Код: Выделить всё
CComPtr pDebugControl;
DebugCreate(IID_PPV(pDebugControl));
CComPtr pDbgClient;
pDebugControl->QueryInterface(IID_PPV(pDbgClient));
MyCallbacks* pC = new MyCallbacks;
pDbgClient->SetEventCallbacksWide(pC);
Код: Выделить всё
HRESULT STDMETHODCALLTYPE MyCallbacks::GetInterestMask(
_Out_ PULONG Mask
)
{
*Mask = DEBUG_EVENT_CHANGE_DEBUGGEE_STATE;
return S_OK;
}
Есть идеи, что я делаю неправильно?
PS . Я попытался немного его настроить и использовал маску DEBUG_EVENT_BREAKPOINT для GetInterestMask, а затем проверил, вызывался ли мой метод IDebugEventCallbacksWide::Breakpoint, когда в WinDbg была достигнута точка останова ядра - и мой обратный вызов тоже никогда не вызывался.
Подробнее здесь: https://stackoverflow.com/questions/790 ... r-how-does
Мобильная версия