Example #1
0
/**
 * @brief	
 * @param	
 * @see		
 * @remarks	
 * @code		
 * @endcode	
 * @return	
**/
DWORD __stdcall DebugCoreCallback(_In_ const DEBUG_EVENT* debug_event, _In_ DWORD_PTR tag)
{
	_ASSERTE(NULL != debug_event);
	_ASSERTE(NULL != tag);
	if (NULL == debug_event || NULL == tag) return DBG_EXCEPTION_NOT_HANDLED;
	
	Debugger* debugger = (Debugger*) tag;
	DWORD ret = debugger->handle_debug_event(debug_event);

	//> debuggee is terminating
	if (EXIT_PROCESS_DEBUG_EVENT == debug_event->dwDebugEventCode)
	{
		debugger->stop();
	}

	return ret;	
}