debug.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 3k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef __debug_h
  2. #define __debug_h
  3. #if DBG
  4. #define DEBUG
  5. #else
  6. #undef  DEBUG
  7. #endif
  8. /*-----------------------------------------------------------------------------
  9. / Debugging APIs (use the Macros, they make it easier and cope with correctly
  10. / removing debugging when it is disabled at build time).
  11. /----------------------------------------------------------------------------*/
  12. void DoTraceSetMask(DWORD dwMask);
  13. void DoTraceSetMaskFromRegKey(HKEY hkRoot, LPCTSTR pszSubKey);
  14. void DoTraceSetMaskFromCLSID(REFCLSID rCLSID);
  15. void DoTraceEnter(DWORD dwMask, LPCTSTR pName);
  16. void DoTraceLeave(void);
  17. void DoTrace(LPCTSTR pFormat, ...);
  18. void DoTraceGUID(LPCTSTR pPrefix, REFGUID rGUID);
  19. void DoTraceAssert(int iLine, LPTSTR pFilename);
  20. /*-----------------------------------------------------------------------------
  21. / Macros to ease the use of the debugging APIS.
  22. /----------------------------------------------------------------------------*/
  23. #ifdef DEBUG
  24. void DebugThreadDetach(void);           // optional
  25. void DebugProcessAttach(void);          // required
  26. void DebugProcessDetach(void);          // required
  27. #define TraceSetMask(dwMask)            DoTraceSetMask(dwMask)
  28. #define TraceSetMaskFromRegKey(hk, psz) DoTraceSetMaskFromRegKey(hk, psz)
  29. #define TraceSetMaskFromCLSID(rCLSID)   DoTraceSetMaskFromCLSID(rCLSID)
  30. #define TraceEnter(dwMask, fn)          DoTraceEnter(dwMask, TEXT(fn))
  31. #define TraceLeave                      DoTraceLeave
  32. #define Trace                           DoTrace
  33. #define TraceMsg(s)                     DoTrace(TEXT(s))
  34. #define TraceGUID(s, rGUID)             DoTraceGUID(TEXT(s), rGUID)
  35. #define TraceAssert(x) 
  36.                 { if ( !(x) ) DoTraceAssert(__LINE__, TEXT(__FILE__)); }
  37. #define TraceLeaveResult(hr) 
  38.                 { HRESULT __hr = (hr); if (FAILED(__hr)) Trace(TEXT("Failed (%08x)"), __hr); TraceLeave(); return __hr; }
  39. #define TraceLeaveVoid() 
  40.                 { TraceLeave(); return; }
  41. #define TraceLeaveValue(value) 
  42.                 { TraceLeave(); return (value); }
  43. #else   // !DEBUG
  44. #define DebugThreadDetach()
  45. #define DebugProcessAttach()
  46. #define DebugProcessDetach()
  47. #define TraceSetMask(dwMask)
  48. #define TraceSetMaskFromRegKey(hk, psz)
  49. #define TraceSetMaskFromCLSID(rCLSID)
  50. #define TraceEnter(dwMask, fn)
  51. #define TraceLeave()
  52. __inline void Trace(LPCTSTR pFormat, ...) {}
  53. #define TraceMsg(s)
  54. #define TraceGUID(s, rGUID)
  55. #define TraceAssert(x)
  56. #define TraceLeaveResult(hr)    { return (hr); }
  57. #define TraceLeaveVoid()        { return; }
  58. #define TraceLeaveValue(value)  { return (value); }
  59. #endif  // DEBUG
  60. #endif  // __debug_h