forked from qt-creator/qt-creator
		
	
		
			
	
	
		
			62 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | #include <stdio.h>
 | ||
|  | #include <windows.h>
 | ||
|  | #include <dbgeng.h>
 | ||
|  | 
 | ||
|  | #include "outputcallback.h"
 | ||
|  | 
 | ||
|  | WinDbgOutputCallback g_outputCallbacks; | ||
|  | 
 | ||
|  | STDMETHODIMP | ||
|  | WinDbgOutputCallback::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) | ||
|  | WinDbgOutputCallback::AddRef( | ||
|  |     THIS | ||
|  |     ) | ||
|  | { | ||
|  |     // This class is designed to be static so
 | ||
|  |     // there's no true refcount.
 | ||
|  |     return 1; | ||
|  | } | ||
|  | 
 | ||
|  | STDMETHODIMP_(ULONG) | ||
|  | WinDbgOutputCallback::Release( | ||
|  |     THIS | ||
|  |     ) | ||
|  | { | ||
|  |     // This class is designed to be static so
 | ||
|  |     // there's no true refcount.
 | ||
|  |     return 0; | ||
|  | } | ||
|  | 
 | ||
|  | STDMETHODIMP | ||
|  | WinDbgOutputCallback::Output( | ||
|  |     THIS_ | ||
|  |     IN ULONG Mask, | ||
|  |     IN PCSTR Text | ||
|  |     ) | ||
|  | { | ||
|  |     UNREFERENCED_PARAMETER(Mask); | ||
|  |     fputs(Text, stdout); | ||
|  |     return S_OK; | ||
|  | } |