mirror of https://github.com/tongzx/nt5src
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.
113 lines
4.6 KiB
113 lines
4.6 KiB
/*
|
|
*************************************************************************
|
|
* File: DEBUG.H
|
|
*
|
|
* Module: USBCCGP.SYS
|
|
* USB Common Class Generic Parent driver.
|
|
*
|
|
* Copyright (c) 1998 Microsoft Corporation
|
|
*
|
|
*
|
|
* Author: ervinp
|
|
*
|
|
*************************************************************************
|
|
*/
|
|
|
|
#ifdef _WIN64
|
|
#define BAD_POINTER ((PVOID)0xFFFFFFFFFFFFFF00)
|
|
#else
|
|
#define BAD_POINTER ((PVOID)0xFFFFFF00)
|
|
#endif
|
|
|
|
#define ISPTR(ptr) ((ptr) && ((ptr) != BAD_POINTER))
|
|
|
|
#if DBG
|
|
|
|
#if WIN95_BUILD
|
|
#define DBG_LEADCHAR ' '
|
|
#else
|
|
#define DBG_LEADCHAR '\'' // required for kd debugger routing on NT
|
|
#endif
|
|
|
|
extern BOOLEAN dbgTrapOnWarn;
|
|
extern BOOLEAN dbgVerbose;
|
|
extern BOOLEAN dbgShowIsochProgress;
|
|
|
|
#define TRAP(msg) \
|
|
{ \
|
|
DbgPrint("%cUSBCCGP> Code coverage trap: '%s' file %s, line %d \n", DBG_LEADCHAR, (msg), __FILE__, __LINE__ ); \
|
|
DbgBreakPoint(); \
|
|
}
|
|
|
|
#undef ASSERT
|
|
#define ASSERT(fact) \
|
|
if (!(fact)){ \
|
|
DbgPrint("%cUSBCCGP> Assertion '%s' failed: file %s, line %d \n", DBG_LEADCHAR, #fact, __FILE__, __LINE__ ); \
|
|
DbgBreakPoint(); \
|
|
}
|
|
|
|
#define DBGWARN(args_in_parens) \
|
|
{ \
|
|
DbgPrint("%cUSBCCGP> *** WARNING *** (file %s, line %d)\n", DBG_LEADCHAR, __FILE__, __LINE__ ); \
|
|
DbgPrint("%c > ", DBG_LEADCHAR); \
|
|
DbgPrint args_in_parens; \
|
|
DbgPrint("\n"); \
|
|
if (dbgTrapOnWarn){ \
|
|
DbgBreakPoint(); \
|
|
} \
|
|
}
|
|
#define DBGERR(args_in_parens) \
|
|
{ \
|
|
DbgPrint("%cUSBCCGP> *** ERROR *** (file %s, line %d)\n", DBG_LEADCHAR, __FILE__, __LINE__ ); \
|
|
DbgPrint("%c > ", DBG_LEADCHAR); \
|
|
DbgPrint args_in_parens; \
|
|
DbgPrint("\n"); \
|
|
DbgBreakPoint(); \
|
|
}
|
|
#define DBGOUT(args_in_parens) \
|
|
{ \
|
|
DbgPrint("%cUSBCCGP> ", DBG_LEADCHAR); \
|
|
DbgPrint args_in_parens; \
|
|
DbgPrint("\n"); \
|
|
}
|
|
#define DBGVERBOSE(args_in_parens) \
|
|
if (dbgVerbose){ \
|
|
DbgPrint("%cUSBCCGP> ", DBG_LEADCHAR); \
|
|
DbgPrint args_in_parens; \
|
|
DbgPrint("\n"); \
|
|
}
|
|
|
|
|
|
VOID DbgLogIrpMajor(ULONG_PTR irpPtr, ULONG majorFunc, ULONG isForParentFdo, ULONG isComplete, ULONG status);
|
|
VOID DbgLogPnpIrp(ULONG_PTR irpPtr, ULONG minorFunc, ULONG isForParentFdo, ULONG isComplete, ULONG status);
|
|
VOID DbgLogIoctl(ULONG ioControlCode, ULONG status);
|
|
VOID DbgLogUrb(PURB urb);
|
|
VOID DbgDumpBytes(PUCHAR msg, PVOID bufPtr, ULONG dataLen);
|
|
PUCHAR DbgGetUrbName(ULONG urbFunc);
|
|
VOID DbgShowIsochProgress();
|
|
|
|
#define DBG_LOG_IRP_MAJOR(irp, majorFunc, isForParentFdo, isComplete, status) \
|
|
DbgLogIrpMajor((ULONG_PTR)(irp), (ULONG)(majorFunc), (ULONG)(isForParentFdo), (ULONG)(isComplete), (ULONG)(status));
|
|
#define DBG_LOG_PNP_IRP(irp, minorFunc, isForParentFdo, isComplete, status) \
|
|
DbgLogPnpIrp((ULONG_PTR)(irp), (ULONG)(minorFunc), (ULONG)(isForParentFdo), (ULONG)(isComplete), (ULONG)(status));
|
|
#define DBG_LOG_IOCTL(ioControlCode, status) \
|
|
DbgLogIoctl(ioControlCode, status)
|
|
#define DBG_LOG_URB(urb) DbgLogUrb(urb)
|
|
#define DBGDUMPBYTES(msg, data, dataLen) DbgDumpBytes(msg, data, dataLen)
|
|
#define DBGSHOWISOCHPROGRESS() DbgShowIsochProgress()
|
|
#else
|
|
#define DBGWARN(args_in_parens)
|
|
#define DBGERR(args_in_parens)
|
|
#define DBGOUT(args_in_parens)
|
|
#define DBGVERBOSE(args_in_parens)
|
|
#define TRAP(msg)
|
|
|
|
#define DBG_LOG_IRP_MAJOR(irp, majorFunc, isForParentFdo, isComplete, status)
|
|
#define DBG_LOG_PNP_IRP(irp, minorFunc, isForParentFdo, isComplete, status)
|
|
#define DBG_LOG_IOCTL(ioControlCode, status)
|
|
#define DBG_LOG_URB(urb)
|
|
#define DBGDUMPBYTES(msg, data, dataLen)
|
|
#define DBGSHOWISOCHPROGRESS()
|
|
#endif
|
|
|
|
|