/*++ Copyright (c) 1991-1997 Microsoft Corporation Module Name: dlcdebug.h Abstract: Contains debugging prototypes and manifests for ACSLAN Author: Richard L Firth (rfirth) 28-May-1992 Revision History: --*/ #define ARRAY_ELEMENTS(a) (sizeof(a)/sizeof((a)[0])) #define LAST_ELEMENT(a) (ARRAY_ELEMENTS(a)-1) #if DBG #define PRIVATE #define ACSLAN_DEBUG_ENV_VAR "ACSLAN_DEBUG_FLAGS" #define ACSLAN_DUMP_FILE_VAR "ACSLAN_DUMP_FILE" #define ACSLAN_DUMP_FILTER_VAR "ACSLAN_DUMP_FILTER" #define DEBUG_DUMP_INPUT_CCB 0x00000001L // dump CCB input to AcsLan #define DEBUG_DUMP_OUTPUT_CCB 0x00000002L // dump CCB output from AcsLan #define DEBUG_DUMP_TX_INFO 0x00000004L // dump transmit buffers #define DEBUG_DUMP_RX_INFO 0x00000008L // dump receive buffers #define DEBUG_DUMP_TX_DATA 0x00000010L // dump data buffer in TRANSMIT commands #define DEBUG_DUMP_RX_DATA 0x00000020L // dump received data frames #define DEBUG_DUMP_DATA_CHAIN 0x00000040L // dump entire chain of received data buffers #define DEBUG_DUMP_FRAME_CHAIN 0x00000080L // dump entire chain of received frames #define DEBUG_DUMP_TX_ASCII 0x00000100L // dump transmitted data as hex & ASCII #define DEBUG_DUMP_RX_ASCII 0x00000200L // dump received data as hex & ASCII #define DEBUG_DUMP_ASYNC_CCBS 0x00000400L // dump READ async. completed CCBs #define DEBUG_RETURN_CODE 0x01000000L // dump return code from AcsLan/NtAcsLan #define DEBUG_DUMP_NTACSLAN 0x02000000L // dump CCBs for NtAcsLan, not AcsLan #define DEBUG_DUMP_ACSLAN 0x04000000L // dump CCBs for AcsLan, not NtAcsLan #define DEBUG_DUMP_TIME 0x08000000L // dump relative time between commands #define DEBUG_DLL_INFO 0x10000000L // dump info about DLL attach/detach #define DEBUG_BREAKPOINT 0x20000000L // break at conditional breakpoints #define DEBUG_TO_FILE 0x40000000L // dump info to file #define DEBUG_TO_TERMINAL 0x80000000L // dump info to console #define IF_DEBUG(c) if (AcslanDebugFlags & DEBUG_##c) #define PUT(x) AcslanDebugPrint x #define DUMPCCB DumpCcb // // misc. // #define DEFAULT_FIELD_WIDTH 16 // amount of description before a number // // DumpData options // #define DD_DEFAULT_OPTIONS 0x00000000 // use defaults #define DD_NO_ADDRESS 0x00000001 // don't display address of data #define DD_LINE_BEFORE 0x00000002 // linefeed before first dumped line #define DD_LINE_AFTER 0x00000004 // linefeed after last dumped line #define DD_INDENT_ALL 0x00000008 // indent all lines #define DD_NO_ASCII 0x00000010 // don't dump ASCII respresentation #define DD_UPPER_CASE 0x00000020 // upper-case hex dump (F4 instead of f4) #define DD_DOT_DOT_SPACE 0x00000040 // fill unused hex space with '..' // // Filters for individual CCB commands: 4 flags max, because each command is // represented by a single ASCII character // #define CF_DUMP_CCB_IN 0x00000001 // dump CCB on input #define CF_DUMP_CCB_OUT 0x00000002 // dump CCB on output #define CF_DUMP_PARMS_IN 0x00000004 // dump parameter table on input #define CF_DUMP_PARMS_OUT 0x00000008 // dump parameter table on output // // global data // #ifndef ACSLAN_DEBUG_FLAGS #define ACSLAN_DEBUG_FLAGS (DEBUG_DUMP_INPUT_CCB \ | DEBUG_DUMP_OUTPUT_CCB \ | DEBUG_DUMP_TX_INFO \ | DEBUG_DUMP_RX_INFO \ | DEBUG_DUMP_TX_DATA \ | DEBUG_DUMP_RX_DATA \ | DEBUG_DUMP_DATA_CHAIN \ | DEBUG_DUMP_FRAME_CHAIN \ | DEBUG_DUMP_TX_ASCII \ | DEBUG_DUMP_RX_ASCII \ | DEBUG_DUMP_ASYNC_CCBS \ | DEBUG_RETURN_CODE \ | DEBUG_DUMP_NTACSLAN \ | DEBUG_DUMP_ACSLAN \ | DEBUG_DUMP_TIME \ | DEBUG_TO_TERMINAL \ ) #endif extern DWORD AcslanDebugFlags; extern FILE* hDumpFile; // // prototypes // VOID GetAcslanDebugFlags( VOID ); VOID SetAcslanDebugFlags( IN DWORD Flags ); VOID AcslanDebugPrint( IN LPSTR Format, IN ... ); VOID DumpCcb( IN PLLC_CCB Ccb, IN BOOL DumpAll, IN BOOL CcbIsInput ); VOID DumpData( IN LPSTR Title, IN PBYTE Address, IN DWORD Length, IN DWORD Options, IN DWORD Indent ); LPSTR MapCcbRetcode( IN BYTE Retcode ); #else #define PRIVATE static #define IF_DEBUG(c) if (0) #define PUT(x) #define DUMPCCB (void) #endif