forked from qt-creator/qt-creator
		
	
		
			
	
	
		
			127 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			127 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#pragma once
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <windows.h>
							 | 
						||
| 
								 | 
							
								#include <dbgeng.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Debugger;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class WinDbgEventCallback : public IDebugEventCallbacks
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
								    WinDbgEventCallback(Debugger* dbg)
							 | 
						||
| 
								 | 
							
								        : m_pDebugger(dbg)
							 | 
						||
| 
								 | 
							
								    {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // IUnknown.
							 | 
						||
| 
								 | 
							
								    STDMETHOD(QueryInterface)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        IN REFIID InterfaceId,
							 | 
						||
| 
								 | 
							
								        OUT PVOID* Interface
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    STDMETHOD_(ULONG, AddRef)(
							 | 
						||
| 
								 | 
							
								        THIS
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    STDMETHOD_(ULONG, Release)(
							 | 
						||
| 
								 | 
							
								        THIS
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // IDebugEventCallbacks.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(GetInterestMask)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __out PULONG Mask
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(Breakpoint)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in PDEBUG_BREAKPOINT Bp
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(Exception)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in PEXCEPTION_RECORD64 Exception,
							 | 
						||
| 
								 | 
							
								        __in ULONG FirstChance
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(CreateThread)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in ULONG64 Handle,
							 | 
						||
| 
								 | 
							
								        __in ULONG64 DataOffset,
							 | 
						||
| 
								 | 
							
								        __in ULONG64 StartOffset
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    STDMETHOD(ExitThread)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in ULONG ExitCode
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(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
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(ExitProcess)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in ULONG ExitCode
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(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
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(UnloadModule)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in_opt PCSTR ImageBaseName,
							 | 
						||
| 
								 | 
							
								        __in ULONG64 BaseOffset
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(SystemError)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in ULONG Error,
							 | 
						||
| 
								 | 
							
								        __in ULONG Level
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(SessionStatus)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in ULONG Status
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(ChangeDebuggeeState)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in ULONG Flags,
							 | 
						||
| 
								 | 
							
								        __in ULONG64 Argument
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(ChangeEngineState)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in ULONG Flags,
							 | 
						||
| 
								 | 
							
								        __in ULONG64 Argument
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    STDMETHOD(ChangeSymbolState)(
							 | 
						||
| 
								 | 
							
								        THIS_
							 | 
						||
| 
								 | 
							
								        __in ULONG Flags,
							 | 
						||
| 
								 | 
							
								        __in ULONG64 Argument
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								private:
							 | 
						||
| 
								 | 
							
								    Debugger*   m_pDebugger;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 |