153 lines
3.1 KiB
C++
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
|