Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

149 lines
4.6 KiB

/*++
Copyright (c) 1994 Microsoft Corporation
All rights reserved.
Module Name:
Debug.h
Abstract:
New debug services for spooler.
Author:
Albert Ting (AlbertT) 15-Jan-1995
Revision History:
--*/
#ifndef _DBGLOG_H
#define _DBGLOG_H
#ifdef __cplusplus
extern "C" {
#endif
typedef DWORD GENERROR, *PGENERROR;
/********************************************************************
DBGCHK
Wraps any function that returns an unsigned 4 byte
quantity with debug logging.
Arguments:
expr - function/expression that needs to be tested
uDbgLevel - print/break error level
exprSuccess - expression that indicates function success
(GenError may be used as the expr return value)
cgeFail - Count of items in pgeFails array
pgeFails - Array of error return values (GenError) used
when simulating failures (must be an array, not
a pointer).
pdwLastErrors - Array of error returned from GetLastError used
when simulating failures, zero terminated.
argsPrint - Arguments to print/log in printf format.
Return Value:
Result of the wrapped function or a simulated failure code.
Usage:
lReturn = RegCreateKey( hKey,
L"SubKey",
&hKeyResult );
should be re-written as:
lReturn = DBGCHK( RegCreateKey( hKey,
L"SubKey",
&hKeyResult ),
DBG_ERROR,
GenError == ERROR_SUCCESS,
2, { ERROR_ACCESS_DENIED, ERROR_INVALID_PARAMETER },
NULL,
( "CreateError 0x%x", hKey ));
dwReturn = DBGCHK( GetProfileString( pszSection,
pszKey,
pszDefault,
szReturnBuffer,
COUNTOF( szReturnBuffer )),
DBG_WARN,
GenError != 0,
1, { 0 },
{ ERROR_CODE_1, ERROR_CODE_2, 0 },
( "GetProfileString: %s, %s, %s",
pszSection,
pszKey,
pszDefault ));
********************************************************************/
#define DBGCHK( expr, \
uDbgLevel, \
exprSuccess, \
cgeFail, \
pgeFails, \
pdwLastErrors, \
argsPrint ) \
{ \
GENERROR GenError; \
LPSTR pszFileA = __FILE__; \
\
if( !bDbgGenFail( pszFileA, \
__LINE__, \
cgeFail, \
pgeFails, \
pdwLastErrors, \
&GenError )){ \
\
GenError = (GENERROR)(expr); \
\
if( !( exprSuccess )){ \
\
vDbgLogError( MODULE_DEBUG, \
uDbgLevel, \
__LINE__, \
pszFileA, \
MODULE, \
pszDbgAllocMsgA argsPrint ); \
} \
} \
GenError; \
}
LPSTR
pszDbgAllocMsgA(
LPCSTR pszMsgFormatA,
...
);
BOOL
bDbgGenFail(
LPCSTR pszFileA,
UINT uLine,
UINT cgeFails,
PGENERROR pgeFails,
PDWORD pdwLastErrors
);
#ifdef __cplusplus
}
#endif
#endif // _DBGLOG_H