00001 /*++ BUILD Version: 0001 // Increment this if a change has global effects 00002 00003 Copyright (c) 1990 Microsoft Corporation 00004 00005 Module Name: 00006 00007 memprint.h 00008 00009 Abstract: 00010 00011 Include file for in-memory DbgPrint function. Including this file 00012 will change DbgPrints to a routine which puts the display text in a 00013 circular buffer in memory. By default, the text is then sent to the 00014 console via DbgPrint. By changing the value of the MemPrintFlags 00015 flag, however, the text may be routed to a file instead, thereby 00016 significantly speeding up the DbgPrint operation. 00017 00018 Author: 00019 00020 David Treadwell (davidtr) 05-Oct-1990 00021 00022 Revision History: 00023 00024 --*/ 00025 00026 #ifndef _MEMPRINT_ 00027 #define _MEMPRINT_ 00028 00029 #define MEM_PRINT_FLAG_CONSOLE 0x01 00030 #define MEM_PRINT_FLAG_FILE 0x02 00031 #define MEM_PRINT_FLAG_HEADER 0x04 00032 00033 extern ULONG MemPrintFlags; 00034 00035 #ifdef MIPS 00036 #define MEM_PRINT_DEF_BUFFER_SIZE 16384 00037 #else 00038 #define MEM_PRINT_DEF_BUFFER_SIZE 65536 00039 #endif 00040 00041 // 00042 // The subbuffer count is the number of subbuffers within the circular 00043 // buffer. A subbuffer is the method used to buffer data between 00044 // MemPrint and writing to disk--when a subbuffer is filled, its 00045 // contents are written to the log file. This value should be a power 00046 // of two between two and sixty-four (two is necessary to allow writing 00047 // to disk and RAM simultaneously, sixty-four is the maximum number of 00048 // things a thread can wait on at once). 00049 // 00050 // 00051 00052 #define MEM_PRINT_DEF_SUBBUFFER_COUNT 16 00053 #define MEM_PRINT_MAX_SUBBUFFER_COUNT 64 00054 00055 #define MEM_PRINT_LOG_FILE_NAME "\\SystemRoot\\Logfile" 00056 00057 // 00058 // Exported routines. MemPrintInitialize sets up the circular buffer 00059 // and other memory, MemPrint writes text to the console and/or a 00060 // log file, and MemPrintFlush writes the current subbuffer to disk 00061 // whether or not it is full. 00062 // 00063 00064 VOID 00065 MemPrintInitialize ( 00066 VOID 00067 ); 00068 00069 VOID 00070 MemPrint ( 00071 CHAR *Format, ... 00072 ); 00073 00074 VOID 00075 MemPrintFlush ( 00076 VOID 00077 ); 00078 00079 #define DbgPrint MemPrint 00080 00081 #endif // def _MEMPRINT_