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.

192 lines
4.2 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1997.
  5. //
  6. // File: N S L O G . C P P
  7. //
  8. // Contents: Functions to log setup errors
  9. //
  10. // Notes:
  11. //
  12. // Author: kumarp 13-May-98
  13. //
  14. //----------------------------------------------------------------------------
  15. #include "pch.h"
  16. #pragma hdrstop
  17. #include <setupapi.h>
  18. #include <nslog.h>
  19. // ----------------------------------------------------------------------
  20. //
  21. // Function: NetSetupLogStatusVa
  22. //
  23. // Purpose: Log info to setuplog
  24. //
  25. // Arguments:
  26. // ls [in] type of status
  27. // szFormat [in] format str
  28. // arglist [in] list of arguments
  29. //
  30. // Returns: None
  31. //
  32. // Author: kumarp 04-June-98
  33. //
  34. // Notes:
  35. //
  36. void NetSetupLogStatusVa(IN LogSeverity ls,
  37. IN PCWSTR szFormat,
  38. IN va_list arglist)
  39. {
  40. static WCHAR szTempBuf[2048];
  41. static const WCHAR c_szPrefix[] = L"NetSetup: ";
  42. static const UINT c_cchPrefix = celems(c_szPrefix) - 1;
  43. wcscpy(szTempBuf, c_szPrefix);
  44. vswprintf(szTempBuf + c_cchPrefix, szFormat, arglist);
  45. TraceTag(ttidNetSetup, "%S", szTempBuf + c_cchPrefix);
  46. wcscat(szTempBuf, L"\r\n");
  47. if (SetupOpenLog(FALSE)) // dont erase existing log file
  48. {
  49. if (!SetupLogError(szTempBuf, ls))
  50. {
  51. TraceLastWin32Error("SetupLogError failed");
  52. }
  53. SetupCloseLog();
  54. }
  55. else
  56. {
  57. TraceLastWin32Error("Could not open SetupLog!!");
  58. }
  59. }
  60. // ----------------------------------------------------------------------
  61. //
  62. // Function: NetSetupLogStatusVa
  63. //
  64. // Purpose: Log info to setuplog
  65. //
  66. // Arguments:
  67. // ls [in] type of status
  68. // szFormat [in] format str
  69. // ... [in] list of arguments
  70. //
  71. // Returns: None
  72. //
  73. // Author: kumarp 04-June-98
  74. //
  75. // Notes:
  76. //
  77. void NetSetupLogStatusV(IN LogSeverity ls,
  78. IN PCWSTR szFormat,
  79. IN ...)
  80. {
  81. va_list arglist;
  82. va_start(arglist, szFormat);
  83. NetSetupLogStatusVa(ls, szFormat, arglist);
  84. va_end(arglist);
  85. }
  86. // ----------------------------------------------------------------------
  87. //
  88. // Function: MapHresultToLogSev
  89. //
  90. // Purpose: Map an HRESULT to LogSeverity
  91. //
  92. // Arguments:
  93. // hr [in] status code
  94. //
  95. // Returns: mapped LogSeverity code
  96. //
  97. // Author: kumarp 04-June-98
  98. //
  99. // Notes:
  100. //
  101. LogSeverity MapHresultToLogSev(IN HRESULT hr)
  102. {
  103. LogSeverity ls;
  104. if (SUCCEEDED(hr))
  105. {
  106. ls = LogSevInformation;
  107. }
  108. else
  109. {
  110. if ((E_FAIL == hr) ||
  111. (E_OUTOFMEMORY == hr))
  112. {
  113. ls = LogSevFatalError;
  114. }
  115. else
  116. {
  117. ls = LogSevError;
  118. }
  119. }
  120. return ls;
  121. }
  122. // ----------------------------------------------------------------------
  123. //
  124. // Function: NetSetupLogHrStatusV
  125. //
  126. // Purpose: Log status using HRESULT status code
  127. //
  128. // Arguments:
  129. // hr [in] status code
  130. // szFormat [in] format str
  131. //
  132. // Returns: None
  133. //
  134. // Author: kumarp 04-June-98
  135. //
  136. // Notes:
  137. //
  138. void NetSetupLogHrStatusV(IN HRESULT hr,
  139. IN PCWSTR szFormat,
  140. ...)
  141. {
  142. va_list arglist;
  143. LogSeverity ls;
  144. ls = MapHresultToLogSev(hr);
  145. va_start(arglist, szFormat);
  146. NetSetupLogStatusVa(ls, szFormat, arglist);
  147. va_end(arglist);
  148. }
  149. // ----------------------------------------------------------------------
  150. //
  151. // Function: NetSetupLogComponentStatus
  152. //
  153. // Purpose: Log status of performing specified action on a component
  154. //
  155. // Arguments:
  156. // szCompId [in] component
  157. // szAction [in] action
  158. // hr [in] statuc code
  159. //
  160. // Returns: None
  161. //
  162. // Author: kumarp 04-June-98
  163. //
  164. // Notes:
  165. //
  166. void NetSetupLogComponentStatus(IN PCWSTR szCompId,
  167. IN PCWSTR szAction,
  168. IN HRESULT hr)
  169. {
  170. static const WCHAR c_szFmt[] =
  171. L"Status of %s '%s': 0x%x";
  172. NetSetupLogHrStatusV(hr, c_szFmt, szAction, szCompId, hr);
  173. }