#ifndef _SRVDEBUG_ #define _SRVDEBUG_ #ifdef MEMPRINT #include #endif // // Debugging macros // #ifndef DBG #define DBG 0 #endif #if !DBG #undef SRVDBG #define SRVDBG 0 #undef SRVDBG2 #define SRVDBG2 0 #define SRVFASTCALL FASTCALL #else #ifndef SRVDBG #define SRVDBG 0 #endif #ifndef SRVDBG2 #define SRVDBG2 0 #endif #define SRVFASTCALL #endif #ifndef SRVDBG_LIST #define SRVDBG_LIST 0 #endif #ifndef SRVDBG_LOCK #define SRVDBG_LOCK 0 #endif #ifndef SRVDBG_STATS #define SRVDBG_STATS 0 #endif #ifndef SRVDBG_STATS2 #define SRVDBG_STATS2 0 #endif #ifndef SRVDBG_HANDLES #define SRVDBG_HANDLES 0 #endif #undef IF_DEBUG #undef IF_SMB_DEBUG #if 0 #define STATIC static #else #define STATIC #endif #if !SRVDBG #define DEBUG if (FALSE) #define IF_DEBUG(flag) if (FALSE) #define IF_SMB_DEBUG(flag) if (FALSE) #define SrvPrint0(fmt) #define SrvPrint1(fmt,v0) #define SrvPrint2(fmt,v0,v1) #define SrvPrint3(fmt,v0,v1,v2) #define SrvPrint4(fmt,v0,v1,v2,v3) #else #define DEBUG if (TRUE) // // We shouldn't have to futz around with LowPart and HighPart, but the x86 compiler // is generating incorrect code for bit testing 64 bit quantities (12/16/94) // #define IF_DEBUG(flag) if( (SrvDebug.u.LowPart & (ULONG)(DEBUG_ ## flag)) || \ (SrvDebug.u.HighPart & (ULONG)(DEBUG_ ## flag >> 32)) ) extern ULARGE_INTEGER SrvDebug; #define IF_SMB_DEBUG(flag) if( (SmbDebug.u.LowPart & (ULONG)(DEBUG_SMB_ ## flag)) || \ (SmbDebug.u.HighPart & (ULONG)(DEBUG_SMB_ ## flag >> 32)) ) extern ULARGE_INTEGER SmbDebug; #define SrvPrint0(fmt) DbgPrint((fmt)) #define SrvPrint1(fmt,v0) DbgPrint((fmt),(v0)) #define SrvPrint2(fmt,v0,v1) DbgPrint((fmt),(v0),(v1)) #define SrvPrint3(fmt,v0,v1,v2) DbgPrint((fmt),(v0),(v1),(v2)) #define SrvPrint4(fmt,v0,v1,v2,v3) DbgPrint((fmt),(v0),(v1),(v2),(v3)) #define PRINT_LITERAL(literal) DbgPrint( #literal" = %lx\n", (literal) ) #define DEBUG_TRACE1 (ULONGLONG)0x0000000000000001 #define DEBUG_TRACE2 (ULONGLONG)0x0000000000000002 #define DEBUG_REFCNT (ULONGLONG)0x0000000000000004 #define DEBUG_HEAP (ULONGLONG)0x0000000000000008 #define DEBUG_WORKER1 (ULONGLONG)0x0000000000000010 #define DEBUG_WORKER2 (ULONGLONG)0x0000000000000020 #define DEBUG_NET1 (ULONGLONG)0x0000000000000040 #define DEBUG_NET2 (ULONGLONG)0x0000000000000080 #define DEBUG_FSP1 (ULONGLONG)0x0000000000000100 #define DEBUG_FSP2 (ULONGLONG)0x0000000000000200 #define DEBUG_FSD1 (ULONGLONG)0x0000000000000400 #define DEBUG_FSD2 (ULONGLONG)0x0000000000000800 #define DEBUG_SCAV1 (ULONGLONG)0x0000000000001000 #define DEBUG_SCAV2 (ULONGLONG)0x0000000000002000 #define DEBUG_BLOCK1 (ULONGLONG)0x0000000000004000 #define DEBUG_IPX_PIPES (ULONGLONG)0x0000000000008000 #define DEBUG_HANDLES (ULONGLONG)0x0000000000010000 #define DEBUG_IPX (ULONGLONG)0x0000000000020000 #define DEBUG_TDI (ULONGLONG)0x0000000000040000 #define DEBUG_OPLOCK (ULONGLONG)0x0000000000080000 #define DEBUG_NETWORK_ERRORS (ULONGLONG)0x0000000000100000 #define DEBUG_FILE_CACHE (ULONGLONG)0x0000000000200000 #define DEBUG_IPX2 (ULONGLONG)0x0000000000400000 #define DEBUG_LOCKS (ULONGLONG)0x0000000000800000 #define DEBUG_SEARCH (ULONGLONG)0x0000000001000000 #define DEBUG_BRUTE_FORCE_REWIND (ULONGLONG)0x0000000002000000 #define DEBUG_COMM (ULONGLONG)0x0000000004000000 #define DEBUG_XACTSRV (ULONGLONG)0x0000000008000000 #define DEBUG_API_ERRORS (ULONGLONG)0x0000000010000000 #define DEBUG_STOP_ON_ERRORS (ULONGLONG)0x0000000020000000 // If set, stop on internal errs #define DEBUG_SMB_ERRORS (ULONGLONG)0x0000000040000000 #define DEBUG_ERRORS (ULONGLONG)0x0000000080000000 #define DEBUG_LICENSE (ULONGLONG)0x0000000100000000 #define DEBUG_WORKITEMS (ULONGLONG)0x0000000200000000 #define DEBUG_IPXNAMECLAIM (ULONGLONG)0x0000000400000000 #define DEBUG_SENDS2OTHERCPU (ULONGLONG)0x0000001000000000 #define DEBUG_REBALANCE (ULONGLONG)0x0000002000000000 #define DEBUG_PNP (ULONGLONG)0x0000004000000000 #define DEBUG_DFS (ULONGLONG)0x0000010000000000 #define DEBUG_SIPX (ULONGLONG)0x0000020000000000 // // SMB debug flags. // #define DEBUG_SMB_ADMIN1 (ULONGLONG)0x0000000000000001 #define DEBUG_SMB_ADMIN2 (ULONGLONG)0x0000000000000002 #define DEBUG_SMB_TREE1 (ULONGLONG)0x0000000000000004 #define DEBUG_SMB_TREE2 (ULONGLONG)0x0000000000000008 #define DEBUG_SMB_DIRECTORY1 (ULONGLONG)0x0000000000000010 #define DEBUG_SMB_DIRECTORY2 (ULONGLONG)0x0000000000000020 #define DEBUG_SMB_OPEN_CLOSE1 (ULONGLONG)0x0000000000000040 #define DEBUG_SMB_OPEN_CLOSE2 (ULONGLONG)0x0000000000000080 #define DEBUG_SMB_FILE_CONTROL1 (ULONGLONG)0x0000000000000100 #define DEBUG_SMB_FILE_CONTROL2 (ULONGLONG)0x0000000000000200 #define DEBUG_SMB_READ_WRITE1 (ULONGLONG)0x0000000000000400 #define DEBUG_SMB_READ_WRITE2 (ULONGLONG)0x0000000000000800 #define DEBUG_SMB_LOCK1 (ULONGLONG)0x0000000000001000 #define DEBUG_SMB_LOCK2 (ULONGLONG)0x0000000000002000 #define DEBUG_SMB_RAW1 (ULONGLONG)0x0000000000004000 #define DEBUG_SMB_RAW2 (ULONGLONG)0x0000000000008000 #define DEBUG_SMB_MPX1 (ULONGLONG)0x0000000000010000 #define DEBUG_SMB_MPX2 (ULONGLONG)0x0000000000020000 #define DEBUG_SMB_SEARCH1 (ULONGLONG)0x0000000000040000 #define DEBUG_SMB_SEARCH2 (ULONGLONG)0x0000000000080000 #define DEBUG_SMB_TRANSACTION1 (ULONGLONG)0x0000000000100000 #define DEBUG_SMB_TRANSACTION2 (ULONGLONG)0x0000000000200000 #define DEBUG_SMB_PRINT1 (ULONGLONG)0x0000000000400000 #define DEBUG_SMB_PRINT2 (ULONGLONG)0x0000000000800000 #define DEBUG_SMB_MESSAGE1 (ULONGLONG)0x0000000001000000 #define DEBUG_SMB_MESSAGE2 (ULONGLONG)0x0000000002000000 #define DEBUG_SMB_MISC1 (ULONGLONG)0x0000000004000000 #define DEBUG_SMB_MISC2 (ULONGLONG)0x0000000008000000 #define DEBUG_SMB_QUERY_SET1 (ULONGLONG)0x0000000010000000 #define DEBUG_SMB_QUERY_SET2 (ULONGLONG)0x0000000020000000 #define DEBUG_SMB_BULK1 (ULONGLONG)0x0000000040000000 #define DEBUG_SMB_BULK2 (ULONGLONG)0x0000000080000000 #define DEBUG_SMB_TRACE (ULONGLONG)0x0000000100000000 #endif // else !SRVDBG // // Macros for list debugging. These verify that lists are good whenever // a list operation is made. // #if SRVDBG_LIST || SRVDBG_LOCK ULONG SrvCheckListIntegrity ( IN PLIST_ENTRY ListHead, IN ULONG MaxEntries ); #endif #if !SRVDBG_LIST #define SrvInsertHeadList(head,entry) InsertHeadList(head,entry) #define SrvInsertTailList(head,entry) InsertTailList(head,entry) #define SrvRemoveEntryList(head,entry) RemoveEntryList(entry) #else // !SRVDBG_LIST VOID SrvIsEntryInList ( IN PLIST_ENTRY ListHead, IN PLIST_ENTRY ListEntry ); VOID SrvIsEntryNotInList ( IN PLIST_ENTRY ListHead, IN PLIST_ENTRY ListEntry ); #define SrvInsertHeadList(head,entry) \ (VOID)SrvCheckListIntegrity( head, 0xFFFFFFFF ); \ SrvIsEntryNotInList(head,entry); \ InsertHeadList(head,entry) #define SrvInsertTailList(head,entry) \ (VOID)SrvCheckListIntegrity( head, 0xFFFFFFFF ); \ SrvIsEntryNotInList(head,entry); \ InsertTailList(head,entry) #define SrvRemoveEntryList(head,entry) \ (VOID)SrvCheckListIntegrity( head, 0xFFFFFFFF ); \ SrvIsEntryInList( head, entry ); \ RemoveEntryList(entry) #endif // else !SRVDBG_LIST // // Macros for statistics arithmetics. // #if !SRVDBG_STATS #define INCREMENT_DEBUG_STAT( _stat_ ) #define DECREMENT_DEBUG_STAT( _stat_ ) #else // !SRVDBG_STATS #define INCREMENT_DEBUG_STAT( _stat_ ) (_stat_)++ #define DECREMENT_DEBUG_STAT( _stat_ ) (_stat_)-- #endif // else !SRVDBG_STATS #if !SRVDBG_STATS2 #define INCREMENT_DEBUG_STAT2( _stat_ ) #define DECREMENT_DEBUG_STAT2( _stat_ ) #else // !SRVDBG_STATS2 #define INCREMENT_DEBUG_STAT2( _stat_ ) (_stat_)++ #define DECREMENT_DEBUG_STAT2( _stat_ ) (_stat_)-- #endif // else !SRVDBG_STATS2 // // Macros for handle tracing. // #if !SRVDBG_HANDLES #define SRVDBG_CLAIM_HANDLE(_a_,_b_,_c_,_d_) #define SRVDBG_RELEASE_HANDLE(_a_,_b_,_c_,_d_) #else VOID SrvdbgClaimOrReleaseHandle ( IN HANDLE Handle, IN PSZ HandleType, IN ULONG Location, IN BOOLEAN Release, IN PVOID Data ); #define SRVDBG_CLAIM_HANDLE(_a_,_b_,_c_,_d_) SrvdbgClaimOrReleaseHandle((_a_),(_b_),(_c_),FALSE,(_d_)) #define SRVDBG_RELEASE_HANDLE(_a_,_b_,_c_,_d_) SrvdbgClaimOrReleaseHandle((_a_),(_b_),(_c_),TRUE,(_d_)) #endif #if DBG // // Routine to write a server buffer to a log file // VOID SrvLogBuffer( PCHAR msg, PVOID buf, ULONG len ); #endif #endif // ndef _SRVDEBUG_