Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

203 lines
4.2 KiB

  1. #ifdef _DEBUG
  2. #ifndef WIN32_LEAN_AND_MEAN
  3. #define WIN32_LEAN_AND_MEAN
  4. #endif
  5. #include <windows.h>
  6. #include <windowsx.h>
  7. #include <stdarg.h>
  8. #include <stdio.h>
  9. #include <commdlg.h>
  10. #include "dbg.h"
  11. #define PRINT_STRW //OutputDebugStringW
  12. #define PRINT_STRA //OutputDebugStringA
  13. static FILE *g_fp;
  14. //-------------------------------------------------------
  15. //Global String buffer
  16. //-------------------------------------------------------
  17. static WCHAR g_wchBuf[1024];
  18. static CHAR g_chBuf[1024];
  19. static LPSTR GetFileTitleStrA(LPSTR lpstrFile)
  20. {
  21. static CHAR tchJunk64[64];
  22. GetFileTitleA(lpstrFile, tchJunk64, sizeof(tchJunk64));
  23. return tchJunk64;
  24. }
  25. static LPWSTR GetFileTitleStrW(LPWSTR lpstrFile)
  26. {
  27. static WCHAR tchJunk64[64];
  28. GetFileTitleW(lpstrFile, tchJunk64, sizeof(tchJunk64));
  29. return tchJunk64;
  30. }
  31. ////////////////////////////////////////////////////////
  32. // Function : _exbtnMBA
  33. // Type : VOID
  34. // Purpose : Popup Debug MessageBox
  35. // Args :
  36. // : LPSTR lpstrFile
  37. // : INT lineNo
  38. // : LPSTR lpstrMsg
  39. // Return :
  40. // DATE :
  41. /////////////////////////////////////////////////////////
  42. VOID _exbtnMBA(LPSTR lpstrFile,
  43. INT lineNo,
  44. LPSTR lpstrMsg)
  45. {
  46. wsprintfA(g_chBuf,
  47. "%s(%d)%s",
  48. GetFileTitleStrA(lpstrFile),
  49. lineNo,
  50. lpstrMsg);
  51. MessageBoxA(NULL,
  52. g_chBuf,
  53. "#### IMEPAD ERROR MESSAGE #####",
  54. MB_ICONERROR | MB_OK | MB_APPLMODAL);
  55. return;
  56. }
  57. VOID _exbtnMBW(LPWSTR lpstrFile,
  58. INT lineNo,
  59. LPWSTR lpstrMsg)
  60. {
  61. wsprintfW(g_wchBuf,
  62. L"%s(%d)%s",
  63. GetFileTitleStrW(lpstrFile),
  64. lineNo,
  65. lpstrMsg);
  66. MessageBoxW(NULL,
  67. lpstrFile,
  68. L"#### ERROR #####",
  69. MB_OK | MB_APPLMODAL);
  70. return;
  71. }
  72. ////////////////////////////////////////////////////////
  73. // Function : _exbtnVaStrW
  74. // Type : LPWSTR
  75. // Purpose :
  76. // Args :
  77. // : LPWSTR lpstrFmt
  78. // Return :
  79. // DATE :
  80. /////////////////////////////////////////////////////////
  81. LPWSTR _exbtnVaStrW(LPWSTR lpstrFmt, ...)
  82. {
  83. static WCHAR wchBuf[512];
  84. va_list ap;
  85. va_start(ap, lpstrFmt);
  86. wvsprintfW(wchBuf, lpstrFmt, ap);
  87. va_end(ap);
  88. return wchBuf;
  89. }
  90. LPSTR _exbtnVaStrA(LPSTR lpstrFmt, ...)
  91. {
  92. static CHAR chBuf[512];
  93. va_list ap;
  94. va_start(ap, lpstrFmt);
  95. wvsprintfA(chBuf, lpstrFmt, ap);
  96. va_end(ap);
  97. return chBuf;
  98. }
  99. ////////////////////////////////////////////////////////
  100. // Function: _exbtnPrint
  101. // Type : VOID
  102. // Purpose : variable args version of OutputDebugString
  103. // Args :
  104. // : LPSTR lpstrFmt
  105. // : ...
  106. // Return :
  107. // DATE :
  108. /////////////////////////////////////////////////////////
  109. VOID _exbtnPrintA(LPSTR lpstrFmt, ...)
  110. {
  111. va_list ap;
  112. va_start(ap, lpstrFmt);
  113. wvsprintfA(g_chBuf, lpstrFmt, ap);
  114. va_end(ap);
  115. if(g_fp) {
  116. fprintf(g_fp, "%s", g_chBuf);
  117. }
  118. PRINT_STRA(g_chBuf);
  119. return;
  120. }
  121. VOID _exbtnPrintW(LPWSTR lpstrFmt, ...)
  122. {
  123. va_list ap;
  124. va_start(ap, lpstrFmt);
  125. wvsprintfW(g_wchBuf, lpstrFmt, ap);
  126. va_end(ap);
  127. if(g_fp) {
  128. fwprintf(g_fp, L"%s", g_wchBuf);
  129. }
  130. PRINT_STRW(g_wchBuf);
  131. return;
  132. }
  133. ////////////////////////////////////////////////////////
  134. // Function: _exbtn
  135. // Type : VOID
  136. // Purpose :
  137. // Args :
  138. // : LPSTR lpstrFile
  139. // : INT lineNo
  140. // : LPTSR lpstrMsg
  141. // Return :
  142. // DATE :
  143. /////////////////////////////////////////////////////////
  144. VOID _exbtnA(LPSTR lpstrFile,
  145. INT lineNo,
  146. LPSTR lpstrMsg
  147. )
  148. {
  149. _exbtnPrintA("(%s:%d) %s",
  150. GetFileTitleStrA(lpstrFile),
  151. lineNo,
  152. lpstrMsg);
  153. return;
  154. }
  155. VOID _exbtnW(LPWSTR lpstrFile,
  156. INT lineNo,
  157. LPWSTR lpstrMsg
  158. )
  159. {
  160. _exbtnPrintW(L"(%s:%d) %s",
  161. GetFileTitleStrW(lpstrFile),
  162. lineNo,
  163. lpstrMsg);
  164. return;
  165. }
  166. LPWSTR _exbtnMulti2Wide(LPSTR lpstr)
  167. {
  168. MultiByteToWideChar(CP_ACP,
  169. MB_PRECOMPOSED,
  170. lpstr, -1,
  171. (WCHAR*)g_wchBuf, sizeof(g_wchBuf)/sizeof(WCHAR) );
  172. return g_wchBuf;
  173. }
  174. VOID _exbtnInit(VOID)
  175. {
  176. #if 0
  177. if(!g_fp) {
  178. g_fp = fopen("c:\\temp\\exbtn.log", "w+");
  179. if(!g_fp) {
  180. return;
  181. }
  182. }
  183. #endif
  184. }
  185. #endif // _DEBUG