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.
 
 
 
 
 
 

110 lines
2.8 KiB

#include "precomp.h"
#if defined(_DEBUG) && ! defined(_UNICODE)
#define MULTI_LEVEL_ZONES
#include <mlzdbg.h>
HDBGZONE g_hDbgZones;
void WINAPI MLZ_DbgInit(PSTR *apszZones, UINT cZones)
{
// if registry is empty, set warning flag as default
DbgInitEx(&g_hDbgZones, apszZones, cZones, ZONE_WARNING_FLAG);
// if the warning flag is not set, then set it as default
if (g_hDbgZones != NULL)
{
((PZONEINFO) g_hDbgZones)->ulZoneMask |= ZONE_WARNING_FLAG;
}
}
void WINAPI MLZ_DbgDeInit(void)
{
DbgDeInit(&g_hDbgZones);
}
void WINAPIV MLZ_WarningOut(PSTR pszFormat, ...)
{
if (g_hDbgZones != NULL &&
IS_ZONE_ENABLED(g_hDbgZones, ZONE_WARNING_FLAG))
{
va_list args;
va_start(args, pszFormat);
DbgPrintf(NULL, pszFormat, args);
va_end(args);
}
}
BOOL WINAPI MLZ_TraceZoneEnabled(int iZone)
{
return (g_hDbgZones != NULL &&
IS_ZONE_ENABLED(g_hDbgZones, ZONE_TRACE_FLAG) &&
IS_ZONE_ENABLED(g_hDbgZones, ZONE_FLAG(iZone)));
}
void WINAPIV MLZ_TraceOut(PSTR pszFormat, ...)
{
va_list args;
va_start(args, pszFormat);
DbgPrintf(NULL, pszFormat, args);
va_end(args);
}
void WINAPI MLZ_EntryOut(int iZone, PSTR pszFunName)
{
if (g_hDbgZones != NULL &&
IS_ZONE_ENABLED(g_hDbgZones, ZONE_FUNCTION_FLAG) &&
IS_ZONE_ENABLED(g_hDbgZones, ZONE_FLAG(iZone)))
{
MLZ_TraceOut("%s() entered.", pszFunName);
}
}
void WINAPI MLZ_ExitOut(int iZone, PSTR pszFunName, RCTYPE eRetCodeType, DWORD_PTR dwRetCode)
{
if (g_hDbgZones != NULL &&
IS_ZONE_ENABLED(g_hDbgZones, ZONE_FUNCTION_FLAG) &&
IS_ZONE_ENABLED(g_hDbgZones, ZONE_FLAG(iZone)))
{
PSTR pszRetCode;
char szFormat[64];
lstrcpyA(&szFormat[0], "%s() exiting...");
pszRetCode = &szFormat[0] + lstrlenA(&szFormat[0]);
if (eRetCodeType != RCTYPE_VOID)
{
lstrcpyA(pszRetCode, " rc=");
pszRetCode += lstrlenA(pszRetCode);
switch (eRetCodeType)
{
case RCTYPE_BOOL:
lstrcpyA(pszRetCode, dwRetCode ? "TRUE" : "FALSE");
break;
case RCTYPE_DWORD:
case RCTYPE_HRESULT:
wsprintf(pszRetCode, "0x%lx", (DWORD)dwRetCode);
break;
case RCTYPE_INT:
wsprintf(pszRetCode, "%ld", (LONG) dwRetCode);
break;
case RCTYPE_ULONG:
wsprintf(pszRetCode, "%lu", (ULONG) dwRetCode);
break;
case RCTYPE_PTR:
wsprintf(pszRetCode, "%p", (LPVOID) dwRetCode);
break;
default:
ASSERT(0);
break;
}
}
MLZ_TraceOut(&szFormat[0], pszFunName);
}
}
#endif // _DEBUG && ! _UNICODE