windows-nt/Source/XPSP1/NT/drivers/wdm/input/client/hidtest/log.c
2020-09-26 16:20:57 +08:00

204 lines
3.9 KiB
C

#define __LOG_C__
/*****************************************************************************
/* Log include files
/*****************************************************************************/
#include <windows.h>
#include <stdlib.h>
#include <wtypes.h>
#include <limits.h>
#include "log.h"
#include "hidsdi.h"
#define USE_MACROS
#include "list.h"
#include "hidtest.h"
#include "debug.h"
/*****************************************************************************
/* Local macro definitions
/*****************************************************************************/
#define IS_LOGGING_ON ((NULL != hTestLog) && (IsLogOn))
/*****************************************************************************
/* Module global variable declarations for logging
/*****************************************************************************/
static HANDLE hTestLog = NULL;
static BOOL IsLogOn = FALSE;
static CHAR String[1024];
/*****************************************************************************
/* Exportable logging function definitions
/*****************************************************************************/
BOOL
HIDTest_CreateTestLogA(
IN PCHAR LogName
)
{
hTestLog = tlCreateLog(LogName, TLS_REFRESH | TLS_LOGALL);
if (NULL != hTestLog) {
tlAddParticipant(hTestLog, 0, 1);
}
IsLogOn = (NULL != hTestLog);
return (IsLogOn);
}
VOID
HIDTest_CloseTestLogA(
VOID
)
{
if (NULL != hTestLog) {
tlRemoveParticipant(hTestLog);
tlDestroyLog(hTestLog);
}
return;
}
VOID
HIDTest_SetLogOnA(
BOOL TurnOn
)
{
IsLogOn = TurnOn;
return;
}
/*****************************************************************************
/* Local functions to deal with NT based logging
/****************************************************************************/
VOID
HIDTest_LogStartTest(
PCHAR TestName
)
{
if (IS_LOGGING_ON) {
tlLog(hTestLog, TL_INFO, TestName);
tlClearTestStats(hTestLog);
}
return;
}
VOID
HIDTest_LogStartTestIteration(
ULONG IterationNumber
)
{
if (IS_LOGGING_ON) {
wsprintf(String, "Iteration number: %u", IterationNumber);
tlLog(hTestLog, TL_INFO, String);
}
return;
}
VOID
HIDTest_LogStartVariationWithDeviceHandle(
HANDLE DeviceHandle,
BOOL IsLegal,
PCHAR Description
)
{
wsprintf(String,
"DeviceHandle = %u, IsLegalDeviceHandle = %s, Test Desc: %s",
(DeviceHandle),
(IsLegal) ? "TRUE" : "FALSE",
Description
);
LOG_INTERMEDIATE_VARIATION_RESULT(String);
return;
}
VOID
HIDTest_LogStartVariation(
PCHAR Variation
)
{
if (IS_LOGGING_ON) {
tlStartVariation(hTestLog);
tlLog(hTestLog, TL_INFO, Variation);
}
return;
}
VOID
HIDTest_LogVariationResult(
INT Level,
PCHAR VarString
)
{
if (IS_LOGGING_ON) {
tlLog(hTestLog, Level | TL_VARIATION, VarString);
}
return;
}
VOID
HIDTest_LogEndVariation(
VOID
)
{
DWORD dwVariationResult;
if (IS_LOGGING_ON) {
dwVariationResult = tlEndVariation(hTestLog);
tlLog(hTestLog, dwVariationResult | TL_VARIATION, "End variation");
}
return;
}
VOID
HIDTest_LogEndTest(
VOID
)
{
if (IS_LOGGING_ON) {
tlLog(hTestLog, TL_TEST, "");
}
return;
}
VOID
HIDTest_LogIntermediateVariationResult(
IN PCHAR VarResult
)
{
if (IS_LOGGING_ON) {
tlLog(hTestLog, TL_INFO, VarResult);
}
return;
}
VOID
HIDTest_LogTestWarning(
IN PCHAR WarningMsg
)
{
if (IS_LOGGING_ON) {
tlLog(hTestLog, TL_WARN, WarningMsg);
}
return;
}
VOID
HIDTest_LogTestError(
IN PCHAR ErrMsg
)
{
if (IS_LOGGING_ON) {
wsprintf(String,
"Critical test error: %s, cannot proceed",
ErrMsg
);
tlLog(hTestLog, TL_SEV1, String);
}
return;
}