windows-nt/Source/XPSP1/NT/base/fs/utils/asrtools/asrsfgen/log.h
2020-09-26 16:20:57 +08:00

91 lines
2.4 KiB
C

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
log.h
Abstract:
Header file for routines to log errors, warnings and info in the asr
log file at %systemroot%\repair\asr.log
Author:
Guhan Suriyanarayanan (guhans) 10-Jul-2000
Environment:
User-mode only.
Revision History:
10-Jul-2000 guhans
Initial creation
--*/
#ifndef _INC_ASR_SF_GEN__LOG_H_
#define _INC_ASR_SF_GEN__LOG_H_
typedef enum __MesgLevel {
s_Info = 0,
s_Warning,
s_Error
} _MesgLevel;
//
// Functions for logging error messages
//
VOID
AsrpInitialiseLogFiles(
VOID
);
VOID
AsrpCloseLogFiles(
VOID
);
VOID
AsrpPrintDbgMsg(
IN CONST _MesgLevel Level,
IN CONST PCSTR FormatString,
...
);
//
// Macro Description:
// This macro wraps calls that are expected to return SUCCESS (retcode).
// If ErrorCondition occurs, it sets the LocalStatus to the ErrorCode
// passed in, calls SetLastError() to set the Last Error to ErrorCode,
// and jumps to the EXIT label in the calling function
//
// Arguments:
// ErrorCondition // Result of some function call or conditional expression.
// LocalStatus // Status variable in the calling function
// LONG ErrorCode // An ErrorCode specific to the error and calling function
//
#define ErrExitCode(ErrorCondition, LocalStatus, ErrorCode) { \
\
if ((BOOL) ErrorCondition) { \
\
if ((BOOL) ErrorCode) { \
AsrpPrintDbgMsg(s_Error, "%S(%lu): ErrorCode: %lu, GetLastError:%lu\n", \
__FILE__, __LINE__, ErrorCode, GetLastError()); \
} \
\
LocalStatus = (DWORD) ErrorCode; \
\
SetLastError((DWORD) ErrorCode); \
\
goto EXIT; \
} \
}
#endif // _INC_ASR_SF_GEN__LOG_H_