forked from qt-creator/qt-creator
		
	
		
			
				
	
	
		
			187 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "windbgeventcallback.h"
 | 
						|
#include "debugger.h"
 | 
						|
 | 
						|
STDMETHODIMP
 | 
						|
WinDbgEventCallback::QueryInterface(
 | 
						|
    THIS_
 | 
						|
    IN REFIID InterfaceId,
 | 
						|
    OUT PVOID* Interface
 | 
						|
    )
 | 
						|
{
 | 
						|
    *Interface = NULL;
 | 
						|
 | 
						|
    if (IsEqualIID(InterfaceId, __uuidof(IUnknown)) ||
 | 
						|
        IsEqualIID(InterfaceId, __uuidof(IDebugOutputCallbacks)))
 | 
						|
    {
 | 
						|
        *Interface = (IDebugOutputCallbacks *)this;
 | 
						|
        AddRef();
 | 
						|
        return S_OK;
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
        return E_NOINTERFACE;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP_(ULONG)
 | 
						|
WinDbgEventCallback::AddRef(
 | 
						|
    THIS
 | 
						|
    )
 | 
						|
{
 | 
						|
    // This class is designed to be static so
 | 
						|
    // there's no true refcount.
 | 
						|
    return 1;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP_(ULONG)
 | 
						|
WinDbgEventCallback::Release(
 | 
						|
    THIS
 | 
						|
    )
 | 
						|
{
 | 
						|
    // This class is designed to be static so
 | 
						|
    // there's no true refcount.
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::GetInterestMask(
 | 
						|
    THIS_
 | 
						|
    __out PULONG Mask
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::Breakpoint(
 | 
						|
    THIS_
 | 
						|
    __in PDEBUG_BREAKPOINT Bp
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::Exception(
 | 
						|
    THIS_
 | 
						|
    __in PEXCEPTION_RECORD64 Exception,
 | 
						|
    __in ULONG FirstChance
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::CreateThread(
 | 
						|
    THIS_
 | 
						|
    __in ULONG64 Handle,
 | 
						|
    __in ULONG64 DataOffset,
 | 
						|
    __in ULONG64 StartOffset
 | 
						|
    )
 | 
						|
{
 | 
						|
    //Debugger::ThreadInfo ti;
 | 
						|
    //ti.handle = Handle;
 | 
						|
    //ti.dataOffset = DataOffset;
 | 
						|
    //ti.startOffset = StartOffset;
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::ExitThread(
 | 
						|
    THIS_
 | 
						|
    __in ULONG ExitCode
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::CreateProcess(
 | 
						|
    THIS_
 | 
						|
    __in ULONG64 ImageFileHandle,
 | 
						|
    __in ULONG64 Handle,
 | 
						|
    __in ULONG64 BaseOffset,
 | 
						|
    __in ULONG ModuleSize,
 | 
						|
    __in_opt PCSTR ModuleName,
 | 
						|
    __in_opt PCSTR ImageName,
 | 
						|
    __in ULONG CheckSum,
 | 
						|
    __in ULONG TimeDateStamp,
 | 
						|
    __in ULONG64 InitialThreadHandle,
 | 
						|
    __in ULONG64 ThreadDataOffset,
 | 
						|
    __in ULONG64 StartOffset
 | 
						|
    )
 | 
						|
{
 | 
						|
    m_pDebugger->m_hDebuggeeProcess = (HANDLE)Handle;
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::ExitProcess(
 | 
						|
    THIS_
 | 
						|
    __in ULONG ExitCode
 | 
						|
    )
 | 
						|
{
 | 
						|
    m_pDebugger->m_hDebuggeeProcess = 0;
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::LoadModule(
 | 
						|
    THIS_
 | 
						|
    __in ULONG64 ImageFileHandle,
 | 
						|
    __in ULONG64 BaseOffset,
 | 
						|
    __in ULONG ModuleSize,
 | 
						|
    __in_opt PCSTR ModuleName,
 | 
						|
    __in_opt PCSTR ImageName,
 | 
						|
    __in ULONG CheckSum,
 | 
						|
    __in ULONG TimeDateStamp
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::UnloadModule(
 | 
						|
    THIS_
 | 
						|
    __in_opt PCSTR ImageBaseName,
 | 
						|
    __in ULONG64 BaseOffset
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::SystemError(
 | 
						|
    THIS_
 | 
						|
    __in ULONG Error,
 | 
						|
    __in ULONG Level
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::SessionStatus(
 | 
						|
    THIS_
 | 
						|
    __in ULONG Status
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::ChangeDebuggeeState(
 | 
						|
    THIS_
 | 
						|
    __in ULONG Flags,
 | 
						|
    __in ULONG64 Argument
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::ChangeEngineState(
 | 
						|
    THIS_
 | 
						|
    __in ULONG Flags,
 | 
						|
    __in ULONG64 Argument
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 | 
						|
 | 
						|
STDMETHODIMP WinDbgEventCallback::ChangeSymbolState(
 | 
						|
    THIS_
 | 
						|
    __in ULONG Flags,
 | 
						|
    __in ULONG64 Argument
 | 
						|
    )
 | 
						|
{
 | 
						|
    return S_OK;
 | 
						|
}
 |