/// <summary>
/// Send events to the debugger.
/// </summary>
/// <param name="eventObject"> Event object to be sent to the debugger. </param>
/// <param name="iidEvent"> ID of the event. </param>
/// <param name="program"> A program that is running in a process. </param>
/// <param name="thread"> A thread running in a program. </param>
public void Send(IDebugEvent2 eventObject, string iidEvent, IDebugProgram2 program, IDebugThread2 thread)
{
uint attributes;
Guid riidEvent = new Guid(iidEvent);
EngineUtils.RequireOk(eventObject.GetAttributes(out attributes));
if ((thread == null) && (m_engine != null) && (m_engine.thread != null) && (program != null) && (eventObject != null) && (riidEvent != null) && (attributes != null))
{
if (m_engine._currentThreadIndex != -1)
{
EngineUtils.RequireOk(m_ad7Callback.Event(m_engine, null, program, m_engine.thread[m_engine._currentThreadIndex], eventObject, ref riidEvent, attributes));
}
else
{
if (m_engine.thread != null)
{
EngineUtils.RequireOk(m_ad7Callback.Event(m_engine, null, program, m_engine.thread[0], eventObject, ref riidEvent, attributes));
}
else
{
EngineUtils.RequireOk(m_ad7Callback.Event(m_engine, null, program, null, eventObject, ref riidEvent, attributes));
}
}
}
else
{
EngineUtils.RequireOk(m_ad7Callback.Event(m_engine, null, program, thread, eventObject, ref riidEvent, attributes));
}
}