Freigeben über


Ereignisquellen (Visual Studio SDK)

Es gibt zwei Quellen von Ereignissen: Das Debugmodul (DE) und der Debug- Manager der Sitzung (SDM). Die Ereignisse, die von DE gesendet werden, verfügen über ein Modul, während die Ereignisse, die vom SDM gesendet werden, ein Modul den Wert NULL haben.

Beispiel

Im folgenden Beispiel wird gezeigt, wie IDebugProgramCreateEvent2 von DE um SDM sendet.

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;  
}  
   
   

Siehe auch

Konzepte

Senden von Ereignissen