windows-nt/Source/XPSP1/NT/net/tapi/skywalker/conftsp/confdbg.cpp
2020-09-26 16:20:57 +08:00

153 lines
3.1 KiB
C++

/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
sdpspdbg.c
Abstract:
This module contains the debugging support for the multicast conference
service provider.
Author:
Mu Han (muhan) 26-March-1997
--*/
#include "stdafx.h"
#include "confdbg.h"
#include <stdio.h>
#ifdef DBG
#define MAXDEBUGSTRINGLEN 2048
#define MAXPATHLEN 255
VOID
DbgPrt(
IN int DbgLevel,
IN PCHAR lpszFormat,
IN ...
)
/*++
Routine Description:
Formats the incoming debug message & calls DbgPrint
Arguments:
DbgLevel - level of message verboseness
DbgMessage - printf-style format string, followed by appropriate
list of arguments
Return Value:
--*/
{
const TCHAR gszTSPKey[] =
"Software\\Microsoft\\Windows\\CurrentVersion\\IPConfTSP";
static FILE *log = NULL;
static int DebugLevel = -1;
if (DebugLevel == -1)
{
HKEY hTSPKey;
DWORD dwDataSize = sizeof (int), dwDataType;
const TCHAR szTSPDebugLevel[] = "DebugLevel";
const TCHAR szTSPLogFile[] = "LogFile";
DebugLevel=0;
if (RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
gszTSPKey,
0,
KEY_READ,
&hTSPKey
) == ERROR_SUCCESS)
{
if (RegQueryValueEx(
hTSPKey,
szTSPDebugLevel,
0,
&dwDataType,
(LPBYTE) &DebugLevel,
&dwDataSize
) == ERROR_SUCCESS)
{
char szFileName[MAXPATHLEN + 1];
dwDataSize = MAXPATHLEN;
if (RegQueryValueEx(
hTSPKey,
szTSPLogFile,
0,
&dwDataType,
(LPBYTE) &szFileName,
&dwDataSize
) == ERROR_SUCCESS)
{
log = fopen(szFileName, "w");
}
}
RegCloseKey (hTSPKey);
}
}
if (DbgLevel <= DebugLevel)
{
char buf[MAXDEBUGSTRINGLEN + 1];
char *message[5] =
{
"FAIL: ",
"WARN: ",
"INFO: ",
"TRCE: ",
"ELSE: "
};
va_list ap;
if (DbgLevel > 5)
{
DbgLevel = 5;
}
SYSTEMTIME SystemTime;
// retrieve local time
GetLocalTime(&SystemTime);
wsprintfA(buf, "IPCONF:[%02u:%02u:%02u.%03u,tid=%x:]%s",
SystemTime.wHour,
SystemTime.wMinute,
SystemTime.wSecond,
SystemTime.wMilliseconds,
GetCurrentThreadId(),
message[DbgLevel - 1]
);
va_start(ap, lpszFormat);
_vsnprintf(&buf[strlen(buf)],
MAXDEBUGSTRINGLEN - strlen(buf), lpszFormat, ap);
lstrcatA (buf, "\n");
OutputDebugStringA (buf);
if (log != NULL)
{
fprintf(log, "%s", buf);
fflush(log);
}
va_end(ap);
}
}
#endif //DBG