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.

201 lines
5.8 KiB

  1. //----------------------------------------------------------------------------
  2. //
  3. // hrstr.cpp
  4. //
  5. // HRESULT-to-string mapper.
  6. //
  7. // Copyright (C) Microsoft Corporation, 1997.
  8. //
  9. //----------------------------------------------------------------------------
  10. #include "pch.cpp"
  11. #pragma hdrstop
  12. #if DBG
  13. #include "cppdbg.hpp"
  14. struct HrStringDef
  15. {
  16. HRESULT hr;
  17. char *pString;
  18. };
  19. #define HRDEF(Name) \
  20. Name, #Name
  21. static HrStringDef g_HrStringDefs[] =
  22. {
  23. // Put specific codes before generic codes so that specific codes
  24. // are returned in the cases where the HRESULT is the same.
  25. HRDEF(D3DERR_BADMAJORVERSION),
  26. HRDEF(D3DERR_BADMINORVERSION),
  27. HRDEF(D3DERR_EXECUTE_LOCKED),
  28. HRDEF(D3DERR_EXECUTE_NOT_LOCKED),
  29. HRDEF(D3DERR_EXECUTE_CREATE_FAILED),
  30. HRDEF(D3DERR_EXECUTE_DESTROY_FAILED),
  31. HRDEF(D3DERR_EXECUTE_LOCK_FAILED),
  32. HRDEF(D3DERR_EXECUTE_UNLOCK_FAILED),
  33. HRDEF(D3DERR_EXECUTE_FAILED),
  34. HRDEF(D3DERR_EXECUTE_CLIPPED_FAILED),
  35. HRDEF(D3DERR_TEXTURE_NO_SUPPORT),
  36. HRDEF(D3DERR_TEXTURE_NOT_LOCKED),
  37. HRDEF(D3DERR_TEXTURE_LOCKED),
  38. HRDEF(D3DERR_TEXTURE_CREATE_FAILED),
  39. HRDEF(D3DERR_TEXTURE_DESTROY_FAILED),
  40. HRDEF(D3DERR_TEXTURE_LOCK_FAILED),
  41. HRDEF(D3DERR_TEXTURE_UNLOCK_FAILED),
  42. HRDEF(D3DERR_TEXTURE_LOAD_FAILED),
  43. HRDEF(D3DERR_MATRIX_CREATE_FAILED),
  44. HRDEF(D3DERR_MATRIX_DESTROY_FAILED),
  45. HRDEF(D3DERR_MATRIX_SETDATA_FAILED),
  46. HRDEF(D3DERR_SETVIEWPORTDATA_FAILED),
  47. HRDEF(D3DERR_MATERIAL_CREATE_FAILED),
  48. HRDEF(D3DERR_MATERIAL_DESTROY_FAILED),
  49. HRDEF(D3DERR_MATERIAL_SETDATA_FAILED),
  50. HRDEF(D3DERR_LIGHT_SET_FAILED),
  51. HRDEF(DDERR_ALREADYINITIALIZED),
  52. HRDEF(DDERR_BLTFASTCANTCLIP),
  53. HRDEF(DDERR_CANNOTATTACHSURFACE),
  54. HRDEF(DDERR_CANNOTDETACHSURFACE),
  55. HRDEF(DDERR_CANTCREATEDC),
  56. HRDEF(DDERR_CANTDUPLICATE),
  57. HRDEF(DDERR_CLIPPERISUSINGHWND),
  58. HRDEF(DDERR_COLORKEYNOTSET),
  59. HRDEF(DDERR_CURRENTLYNOTAVAIL),
  60. HRDEF(DDERR_DIRECTDRAWALREADYCREATED),
  61. HRDEF(DDERR_EXCEPTION),
  62. HRDEF(DDERR_EXCLUSIVEMODEALREADYSET),
  63. HRDEF(DDERR_GENERIC),
  64. HRDEF(DDERR_HEIGHTALIGN),
  65. HRDEF(DDERR_HWNDALREADYSET),
  66. HRDEF(DDERR_HWNDSUBCLASSED),
  67. HRDEF(DDERR_IMPLICITLYCREATED),
  68. HRDEF(DDERR_INCOMPATIBLEPRIMARY),
  69. HRDEF(DDERR_INVALIDCAPS),
  70. HRDEF(DDERR_INVALIDCLIPLIST),
  71. HRDEF(DDERR_INVALIDDIRECTDRAWGUID),
  72. HRDEF(DDERR_INVALIDMODE),
  73. HRDEF(DDERR_INVALIDOBJECT),
  74. HRDEF(DDERR_INVALIDPARAMS),
  75. HRDEF(DDERR_INVALIDPIXELFORMAT),
  76. HRDEF(DDERR_INVALIDPOSITION),
  77. HRDEF(DDERR_INVALIDRECT),
  78. HRDEF(DDERR_LOCKEDSURFACES),
  79. HRDEF(DDERR_NO3D),
  80. HRDEF(DDERR_NOALPHAHW),
  81. HRDEF(DDERR_NOBLTHW),
  82. HRDEF(DDERR_NOCLIPLIST),
  83. HRDEF(DDERR_NOCLIPPERATTACHED),
  84. HRDEF(DDERR_NOCOLORCONVHW),
  85. HRDEF(DDERR_NOCOLORKEY),
  86. HRDEF(DDERR_NOCOLORKEYHW),
  87. HRDEF(DDERR_NOCOOPERATIVELEVELSET),
  88. HRDEF(DDERR_NODC),
  89. HRDEF(DDERR_NODDROPSHW),
  90. HRDEF(DDERR_NODIRECTDRAWHW),
  91. HRDEF(DDERR_NOEMULATION),
  92. HRDEF(DDERR_NOEXCLUSIVEMODE),
  93. HRDEF(DDERR_NOFLIPHW),
  94. HRDEF(DDERR_NOGDI),
  95. HRDEF(DDERR_NOHWND),
  96. HRDEF(DDERR_NOMIRRORHW),
  97. HRDEF(DDERR_NOOVERLAYDEST),
  98. HRDEF(DDERR_NOOVERLAYHW),
  99. HRDEF(DDERR_NOPALETTEATTACHED),
  100. HRDEF(DDERR_NOPALETTEHW),
  101. HRDEF(DDERR_NORASTEROPHW),
  102. HRDEF(DDERR_NOROTATIONHW),
  103. HRDEF(DDERR_NOSTRETCHHW),
  104. HRDEF(DDERR_NOT4BITCOLOR),
  105. HRDEF(DDERR_NOT4BITCOLORINDEX),
  106. HRDEF(DDERR_NOT8BITCOLOR),
  107. HRDEF(DDERR_NOTAOVERLAYSURFACE),
  108. HRDEF(DDERR_NOTEXTUREHW),
  109. HRDEF(DDERR_NOTFLIPPABLE),
  110. HRDEF(DDERR_NOTFOUND),
  111. HRDEF(DDERR_NOTLOCKED),
  112. HRDEF(DDERR_NOTPALETTIZED),
  113. HRDEF(DDERR_NOVSYNCHW),
  114. HRDEF(DDERR_NOZBUFFERHW),
  115. HRDEF(DDERR_NOZOVERLAYHW),
  116. HRDEF(DDERR_OUTOFCAPS),
  117. HRDEF(DDERR_OUTOFMEMORY),
  118. HRDEF(DDERR_OUTOFVIDEOMEMORY),
  119. HRDEF(DDERR_OVERLAYCANTCLIP),
  120. HRDEF(DDERR_OVERLAYCOLORKEYONLYONEACTIVE),
  121. HRDEF(DDERR_OVERLAYNOTVISIBLE),
  122. HRDEF(DDERR_PALETTEBUSY),
  123. HRDEF(DDERR_PRIMARYSURFACEALREADYEXISTS),
  124. HRDEF(DDERR_REGIONTOOSMALL),
  125. HRDEF(DDERR_SURFACEALREADYATTACHED),
  126. HRDEF(DDERR_SURFACEALREADYDEPENDENT),
  127. HRDEF(DDERR_SURFACEBUSY),
  128. HRDEF(DDERR_SURFACEISOBSCURED),
  129. HRDEF(DDERR_SURFACELOST),
  130. HRDEF(DDERR_SURFACENOTATTACHED),
  131. HRDEF(DDERR_TOOBIGHEIGHT),
  132. HRDEF(DDERR_TOOBIGSIZE),
  133. HRDEF(DDERR_TOOBIGWIDTH),
  134. HRDEF(DDERR_UNSUPPORTED),
  135. HRDEF(DDERR_UNSUPPORTEDFORMAT),
  136. HRDEF(DDERR_UNSUPPORTEDMASK),
  137. HRDEF(DDERR_VERTICALBLANKINPROGRESS),
  138. HRDEF(DDERR_WASSTILLDRAWING),
  139. HRDEF(DDERR_WRONGMODE),
  140. HRDEF(DDERR_XALIGN),
  141. HRDEF(E_OUTOFMEMORY),
  142. HRDEF(E_INVALIDARG),
  143. HRDEF(E_FAIL),
  144. HRDEF(S_FALSE),
  145. HRDEF(S_OK),
  146. 0, NULL,
  147. };
  148. //----------------------------------------------------------------------------
  149. //
  150. // DebugModule::HrString
  151. //
  152. // Attempts to produce a descriptive string for the given HRESULT.
  153. //
  154. //----------------------------------------------------------------------------
  155. char *DebugModule::HrString(HRESULT hr)
  156. {
  157. HrStringDef *pHrDef;
  158. // Look for a defined string.
  159. for (pHrDef = g_HrStringDefs; pHrDef->pString != NULL; pHrDef++)
  160. {
  161. if (pHrDef->hr == hr)
  162. {
  163. return pHrDef->pString;
  164. }
  165. }
  166. // It's not a defined string so return the numeric value
  167. // as a string. Use a circular buffer of strings so that
  168. // this routine can be used more than once in a particular output
  169. // message.
  170. #define STATIC_BUFFER 256
  171. #define MAX_STRING 16
  172. static char chBuffer[STATIC_BUFFER];
  173. static char *pBuf = chBuffer;
  174. char *pString;
  175. if (pBuf - chBuffer + MAX_STRING > STATIC_BUFFER)
  176. {
  177. pBuf = chBuffer;
  178. }
  179. sprintf(pBuf, "0x%08X", hr);
  180. pString = pBuf;
  181. pBuf += MAX_STRING;
  182. return pString;
  183. }
  184. #endif // #if DBG