176 lines
2.9 KiB
C++
176 lines
2.9 KiB
C++
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1999 - 1999
|
|
|
|
Module Name:
|
|
|
|
debug.c
|
|
|
|
Abstract:
|
|
|
|
Common code for debugging.
|
|
|
|
Author:
|
|
|
|
Keisuke Tsuchida (KeisukeT)
|
|
|
|
Environment:
|
|
|
|
uesr mode only
|
|
|
|
Notes:
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
//
|
|
// Precompiled header
|
|
//
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
//
|
|
// Includes
|
|
//
|
|
#include "stddef.h"
|
|
#include "debug.h"
|
|
#include <stiregi.h>
|
|
|
|
//
|
|
// Globals
|
|
//
|
|
|
|
ULONG DebugTraceLevel = MIN_TRACE | DEBUG_FLAG_DISABLE;
|
|
//ULONG DebugTraceLevel = MAX_TRACE | DEBUG_FLAG_DISABLE | TRACE_PROC_ENTER | TRACE_PROC_LEAVE;
|
|
|
|
TCHAR acErrorBuffer[MAX_TEMPBUF];
|
|
|
|
|
|
//
|
|
// Function
|
|
//
|
|
|
|
|
|
VOID
|
|
MyDebugInit()
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Read DebugTraceLevel key from registry if exists.
|
|
|
|
Arguments:
|
|
|
|
none.
|
|
|
|
Return Value:
|
|
|
|
none.
|
|
|
|
--*/
|
|
{
|
|
|
|
HKEY hkRegistry;
|
|
LONG Err;
|
|
DWORD dwType;
|
|
DWORD dwSize;
|
|
ULONG ulBuffer;
|
|
|
|
DebugTrace(TRACE_PROC_ENTER,("MyDebugInit: Enter... \r\n"));
|
|
|
|
//
|
|
// Initialize local variables.
|
|
//
|
|
|
|
hkRegistry = NULL;
|
|
Err = 0;
|
|
dwSize = sizeof(ulBuffer);
|
|
|
|
//
|
|
// Open registry key.
|
|
//
|
|
|
|
Err = RegOpenKey(HKEY_LOCAL_MACHINE,
|
|
REGSTR_PATH_STICONTROL_W,
|
|
&hkRegistry);
|
|
if(ERROR_SUCCESS != Err){
|
|
DebugTrace(TRACE_STATUS,("MyDebugInit: Can't open %ws. Err=0x%x.\r\n", REGSTR_PATH_STICONTROL_W, Err));
|
|
goto MyDebugInit_return;
|
|
}
|
|
|
|
Err = RegQueryValueEx(hkRegistry,
|
|
REGVAL_DEBUGLEVEL,
|
|
NULL,
|
|
&dwType,
|
|
(LPBYTE)&ulBuffer,
|
|
&dwSize);
|
|
if(ERROR_SUCCESS != Err){
|
|
DebugTrace(TRACE_STATUS,("MyDebugInit: Can't get %ws\\%ws value. Err=0x%x.\r\n", REGSTR_PATH_STICONTROL_W, REGVAL_DEBUGLEVEL, Err));
|
|
goto MyDebugInit_return;
|
|
}
|
|
|
|
DebugTraceLevel = ulBuffer;
|
|
DebugTrace(TRACE_CRITICAL, ("MyDebugInit: Reg-key found. DebugTraceLevel=0x%x.\r\n", DebugTraceLevel));
|
|
|
|
MyDebugInit_return:
|
|
|
|
//
|
|
// Clean up.
|
|
//
|
|
|
|
if(NULL != hkRegistry){
|
|
RegCloseKey(hkRegistry);
|
|
}
|
|
|
|
DebugTrace(TRACE_PROC_LEAVE,("MyDebugInit: Leaving... Ret=VOID.\r\n"));
|
|
return;
|
|
}
|
|
|
|
void __cdecl
|
|
DbgPrint(
|
|
LPSTR lpstrMessage,
|
|
...
|
|
)
|
|
{
|
|
|
|
va_list list;
|
|
|
|
va_start(list,lpstrMessage);
|
|
|
|
wvsprintfA((LPSTR)acErrorBuffer, lpstrMessage, list);
|
|
|
|
if(DebugTraceLevel & TRACE_MESSAGEBOX){
|
|
MessageBoxA(NULL, (LPSTR)acErrorBuffer, "", MB_OK);
|
|
}
|
|
#if DBG
|
|
OutputDebugStringA((LPCSTR)acErrorBuffer);
|
|
#endif // DBG
|
|
|
|
va_end(list);
|
|
}
|
|
|
|
void __cdecl
|
|
DbgPrint(
|
|
LPWSTR lpstrMessage,
|
|
...
|
|
)
|
|
{
|
|
|
|
va_list list;
|
|
|
|
va_start(list,lpstrMessage);
|
|
|
|
wvsprintfW(acErrorBuffer, lpstrMessage, list);
|
|
|
|
if(DebugTraceLevel & TRACE_MESSAGEBOX){
|
|
MessageBoxW(NULL, acErrorBuffer, L"", MB_OK);
|
|
}
|
|
#if DBG
|
|
OutputDebugStringW(acErrorBuffer);
|
|
#endif // DBG
|
|
|
|
va_end(list);
|
|
}
|
|
|