事件源 (Visual Studio SDK)

有两个源:调试引擎 (DE)和会议调试管理器 (SDM)。 ,而从 SDM 发送事件具有一个空引擎,从 DE 发送事件具有非 null 引擎。

示例

下面的示例演示如何从、发送 IDebugProgramCreateEvent2 到 SDM。

CDebugProgramCreateEvent* pProgramCreateEvent = new CDebugProgramCreateEvent();
if (FAILED(pCallback->Event(m_pEngine, NULL, m_pProgram, NULL, pProgramCreateEvent, IID_IDebugProgramCreateEvent2, EVENT_ASYNCHRONOUS)))
{
   // Handle failure here.
}
]

CEvent * pProgCreate = new CEvent(IID_IDebugProgramCreateEvent2, EVENT_ASYNCHRONOUS);  
pProgCreate->SendEvent(pCallback, m_pEngine, (IDebugProgram2 *)this, NULL);  
   
   
   
HRESULT CEvent::SendEvent(IDebugEventCallback2 *pCallback, IDebugEngine2 *pEngine, IDebugProgram2 *pProgram, IDebugThread2 *pThread) {  
   HRESULT hr;  
   
   if (m_dwAttrib & EVENT_STOPPING)  
   {  
      hr = SendStoppingEvent(pCallback, pEngine, pProgram, pThread);  
   }  
   else if (m_dwAttrib & EVENT_SYNCHRONOUS)  
   {  
      hr = SendSynchronousEvent(pCallback, pEngine, pProgram, pThread);  
   }  
   else  
   {  
      assert(m_dwAttrib == 0);  
      hr = SendAsynchronousEvent(pCallback, pEngine, pProgram, pThread);  
   }  
  
   return hr;  
}  
   
HRESULT CEvent::SendAsynchronousEvent(IDebugEventCallback2 *pCallback, IDebugEngine2 *pEngine, IDebugProgram2 *pProgram, IDebugThread2 *pThread) {  
   
    HRESULT hr;  
   
   // Make sure the CEvent object running this code is not deleted until the code completes.  
   AddRef();  
   
   pCallback->Event(pEngine, NULL, pProgram, pThread, (IDebugEvent2 *)this, m_riid, m_dwAttrib);  
  
   // No error recovery here.  
   hr = S_OK;   
   
   Release();  
   return hr;  
}  
   
   

请参见

概念

发送事件