|
|
//----------------------------------------------------------------------------
//
// hrstr.cpp
//
// HRESULT-to-string mapper.
//
// Copyright (C) Microsoft Corporation, 1997.
//
//----------------------------------------------------------------------------
#include "pch.cpp"
#pragma hdrstop
#if DBG
#include "cppdbg.hpp"
struct HrStringDef { HRESULT hr; char *pString; };
#define HRDEF(Name) \
Name, #Name
static HrStringDef g_HrStringDefs[] = { // Put specific codes before generic codes so that specific codes
// are returned in the cases where the HRESULT is the same.
HRDEF(DDERR_ALREADYINITIALIZED), HRDEF(DDERR_BLTFASTCANTCLIP), HRDEF(DDERR_CANNOTATTACHSURFACE), HRDEF(DDERR_CANNOTDETACHSURFACE), HRDEF(DDERR_CANTCREATEDC), HRDEF(DDERR_CANTDUPLICATE), HRDEF(DDERR_CLIPPERISUSINGHWND), HRDEF(DDERR_COLORKEYNOTSET), HRDEF(DDERR_CURRENTLYNOTAVAIL), HRDEF(DDERR_DIRECTDRAWALREADYCREATED), HRDEF(DDERR_EXCEPTION), HRDEF(DDERR_EXCLUSIVEMODEALREADYSET), HRDEF(DDERR_GENERIC), HRDEF(DDERR_HEIGHTALIGN), HRDEF(DDERR_HWNDALREADYSET), HRDEF(DDERR_HWNDSUBCLASSED), HRDEF(DDERR_IMPLICITLYCREATED), HRDEF(DDERR_INCOMPATIBLEPRIMARY), HRDEF(DDERR_INVALIDCAPS), HRDEF(DDERR_INVALIDCLIPLIST), HRDEF(DDERR_INVALIDDIRECTDRAWGUID), HRDEF(DDERR_INVALIDMODE), HRDEF(DDERR_INVALIDOBJECT), HRDEF(DDERR_INVALIDPARAMS), HRDEF(DDERR_INVALIDPIXELFORMAT), HRDEF(DDERR_INVALIDPOSITION), HRDEF(DDERR_INVALIDRECT), HRDEF(DDERR_LOCKEDSURFACES), HRDEF(DDERR_NO3D), HRDEF(DDERR_NOALPHAHW), HRDEF(DDERR_NOBLTHW), HRDEF(DDERR_NOCLIPLIST), HRDEF(DDERR_NOCLIPPERATTACHED), HRDEF(DDERR_NOCOLORCONVHW), HRDEF(DDERR_NOCOLORKEY), HRDEF(DDERR_NOCOLORKEYHW), HRDEF(DDERR_NOCOOPERATIVELEVELSET), HRDEF(DDERR_NODC), HRDEF(DDERR_NODDROPSHW), HRDEF(DDERR_NODIRECTDRAWHW), HRDEF(DDERR_NOEMULATION), HRDEF(DDERR_NOEXCLUSIVEMODE), HRDEF(DDERR_NOFLIPHW), HRDEF(DDERR_NOGDI), HRDEF(DDERR_NOHWND), HRDEF(DDERR_NOMIRRORHW), HRDEF(DDERR_NOOVERLAYDEST), HRDEF(DDERR_NOOVERLAYHW), HRDEF(DDERR_NOPALETTEATTACHED), HRDEF(DDERR_NOPALETTEHW), HRDEF(DDERR_NORASTEROPHW), HRDEF(DDERR_NOROTATIONHW), HRDEF(DDERR_NOSTRETCHHW), HRDEF(DDERR_NOT4BITCOLOR), HRDEF(DDERR_NOT4BITCOLORINDEX), HRDEF(DDERR_NOT8BITCOLOR), HRDEF(DDERR_NOTAOVERLAYSURFACE), HRDEF(DDERR_NOTEXTUREHW), HRDEF(DDERR_NOTFLIPPABLE), HRDEF(DDERR_NOTFOUND), HRDEF(DDERR_NOTLOCKED), HRDEF(DDERR_NOTPALETTIZED), HRDEF(DDERR_NOVSYNCHW), HRDEF(DDERR_NOZBUFFERHW), HRDEF(DDERR_NOZOVERLAYHW), HRDEF(DDERR_OUTOFCAPS), HRDEF(DDERR_OUTOFMEMORY), HRDEF(DDERR_OUTOFVIDEOMEMORY), HRDEF(DDERR_OVERLAYCANTCLIP), HRDEF(DDERR_OVERLAYCOLORKEYONLYONEACTIVE), HRDEF(DDERR_OVERLAYNOTVISIBLE), HRDEF(DDERR_PALETTEBUSY), HRDEF(DDERR_PRIMARYSURFACEALREADYEXISTS), HRDEF(DDERR_REGIONTOOSMALL), HRDEF(DDERR_SURFACEALREADYATTACHED), HRDEF(DDERR_SURFACEALREADYDEPENDENT), HRDEF(DDERR_SURFACEBUSY), HRDEF(DDERR_SURFACEISOBSCURED), HRDEF(DDERR_SURFACELOST), HRDEF(DDERR_SURFACENOTATTACHED), HRDEF(DDERR_TOOBIGHEIGHT), HRDEF(DDERR_TOOBIGSIZE), HRDEF(DDERR_TOOBIGWIDTH), HRDEF(DDERR_UNSUPPORTED), HRDEF(DDERR_UNSUPPORTEDFORMAT), HRDEF(DDERR_UNSUPPORTEDMASK), HRDEF(DDERR_VERTICALBLANKINPROGRESS), HRDEF(DDERR_WASSTILLDRAWING), HRDEF(DDERR_WRONGMODE), HRDEF(DDERR_XALIGN), HRDEF(E_OUTOFMEMORY), HRDEF(E_INVALIDARG), HRDEF(E_FAIL), HRDEF(S_FALSE), HRDEF(S_OK), HRDEF(D3DERR_WRONGTEXTUREFORMAT), HRDEF(D3DERR_UNSUPPORTEDCOLOROPERATION), HRDEF(D3DERR_UNSUPPORTEDCOLORARG), HRDEF(D3DERR_UNSUPPORTEDALPHAOPERATION), HRDEF(D3DERR_UNSUPPORTEDALPHAARG), HRDEF(D3DERR_TOOMANYOPERATIONS), HRDEF(D3DERR_CONFLICTINGTEXTUREFILTER), HRDEF(D3DERR_UNSUPPORTEDFACTORVALUE), HRDEF(D3DERR_CONFLICTINGRENDERSTATE), HRDEF(D3DERR_UNSUPPORTEDTEXTUREFILTER), HRDEF(D3DERR_CONFLICTINGTEXTUREPALETTE), HRDEF(D3DERR_DRIVERINTERNALERROR), HRDEF(D3DERR_NOTFOUND), HRDEF(D3DERR_MOREDATA), HRDEF(D3DERR_DEVICENOTRESET), HRDEF(D3DERR_DEVICELOST), HRDEF(D3DERR_NOTAVAILABLE), HRDEF(D3DERR_INVALIDDEVICE), HRDEF(D3DERR_INVALIDCALL), 0, NULL, };
//----------------------------------------------------------------------------
//
// DebugModule::HrString
//
// Attempts to produce a descriptive string for the given HRESULT.
//
//----------------------------------------------------------------------------
char *DebugModule::HrString(HRESULT hr) { HrStringDef *pHrDef;
// Look for a defined string.
for (pHrDef = g_HrStringDefs; pHrDef->pString != NULL; pHrDef++) { if (pHrDef->hr == hr) { return pHrDef->pString; } }
// It's not a defined string so return the numeric value
// as a string. Use a circular buffer of strings so that
// this routine can be used more than once in a particular output
// message.
#define STATIC_BUFFER 256
#define MAX_STRING 16
static char chBuffer[STATIC_BUFFER]; static char *pBuf = chBuffer; char *pString;
if (pBuf - chBuffer + MAX_STRING > STATIC_BUFFER) { pBuf = chBuffer; }
sprintf(pBuf, "0x%08X", hr);
pString = pBuf; pBuf += MAX_STRING;
return pString; }
//----------------------------------------------------------------------------
//
// HrString
//
// Attempts to produce a descriptive string for the given HRESULT.
//
//----------------------------------------------------------------------------
char *HrToStr(HRESULT hr) { HrStringDef *pHrDef;
// Look for a defined string.
for (pHrDef = g_HrStringDefs; pHrDef->pString != NULL; pHrDef++) { if (pHrDef->hr == hr) { return pHrDef->pString; } }
// It's not a defined string so return the numeric value
// as a string. Use a circular buffer of strings so that
// this routine can be used more than once in a particular output
// message.
#define STATIC_BUFFER 256
#define MAX_STRING 16
static char chBuffer[STATIC_BUFFER]; static char *pBuf = chBuffer; char *pString;
if (pBuf - chBuffer + MAX_STRING > STATIC_BUFFER) { pBuf = chBuffer; }
sprintf(pBuf, "0x%08X", hr);
pString = pBuf; pBuf += MAX_STRING;
return pString; }
#endif // #if DBG
|