Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

heappage.h

Go to the documentation of this file.
00001 00002 // 00003 // heappage.h 00004 // 00005 00006 #ifndef _HEAP_PAGE_H_ 00007 #define _HEAP_PAGE_H_ 00008 00009 // 00010 // #defining DEBUG_PAGE_HEAP will cause the page heap manager 00011 // to be compiled. Only #define this flag if NOT kernel mode. 00012 // Probably want to define this just for checked-build (DBG). 00013 // 00014 00015 #ifndef NTOS_KERNEL_RUNTIME 00016 // #if DBG 00017 #define DEBUG_PAGE_HEAP 1 00018 // #endif 00019 #endif 00020 00021 #include "heappagi.h" 00022 00023 #ifndef DEBUG_PAGE_HEAP 00024 00025 // 00026 // These macro-based hooks should be defined to nothing so they 00027 // simply "go away" during compile if the debug heap manager is 00028 // not desired (retail builds). 00029 // 00030 00031 #define IS_DEBUG_PAGE_HEAP_HANDLE( HeapHandle ) FALSE 00032 #define IF_DEBUG_PAGE_HEAP_THEN_RETURN( Handle, ReturnThis ) 00033 #define IF_DEBUG_PAGE_HEAP_THEN_CALL( Handle, CallThis ) 00034 #define IF_DEBUG_PAGE_HEAP_THEN_BREAK( Handle, Text, ReturnThis ) 00035 00036 #define HEAP_FLAG_PAGE_ALLOCS 0 00037 00038 #define RtlpDebugPageHeapValidate( HeapHandle, Flags, Address ) TRUE 00039 00040 #else // DEBUG_PAGE_HEAP 00041 00042 // 00043 // The following definitions and prototypes are the external interface 00044 // for hooking the debug heap manager in the retail heap manager. 00045 // 00046 00047 #define HEAP_FLAG_PAGE_ALLOCS 0x01000000 00048 00049 #define HEAP_PROTECTION_ENABLED 0x02000000 00050 #define HEAP_BREAK_WHEN_OUT_OF_VM 0x04000000 00051 #define HEAP_NO_ALIGNMENT 0x08000000 00052 00053 00054 #define IS_DEBUG_PAGE_HEAP_HANDLE( HeapHandle ) \ 00055 (((PHEAP)(HeapHandle))->ForceFlags & HEAP_FLAG_PAGE_ALLOCS ) 00056 00057 00058 #define IF_DEBUG_PAGE_HEAP_THEN_RETURN( Handle, ReturnThis ) \ 00059 { \ 00060 if ( IS_DEBUG_PAGE_HEAP_HANDLE( Handle )) \ 00061 { \ 00062 return ReturnThis; \ 00063 } \ 00064 } 00065 00066 00067 #define IF_DEBUG_PAGE_HEAP_THEN_CALL( Handle, CallThis ) \ 00068 { \ 00069 if ( IS_DEBUG_PAGE_HEAP_HANDLE( Handle )) \ 00070 { \ 00071 CallThis; \ 00072 return; \ 00073 } \ 00074 } 00075 00076 00077 #define IF_DEBUG_PAGE_HEAP_THEN_BREAK( Handle, Text, ReturnThis ) \ 00078 { \ 00079 if ( IS_DEBUG_PAGE_HEAP_HANDLE( Handle )) \ 00080 { \ 00081 RtlpDebugPageHeapBreak( Text ); \ 00082 return ReturnThis; \ 00083 } \ 00084 } 00085 00086 00087 PVOID 00088 RtlpDebugPageHeapCreate( 00089 IN ULONG Flags, 00090 IN PVOID HeapBase, 00091 IN SIZE_T ReserveSize, 00092 IN SIZE_T CommitSize, 00093 IN PVOID Lock, 00094 IN PRTL_HEAP_PARAMETERS Parameters 00095 ); 00096 00097 PVOID 00098 RtlpDebugPageHeapAllocate( 00099 IN PVOID HeapHandle, 00100 IN ULONG Flags, 00101 IN SIZE_T Size 00102 ); 00103 00104 BOOLEAN 00105 RtlpDebugPageHeapFree( 00106 IN PVOID HeapHandle, 00107 IN ULONG Flags, 00108 IN PVOID Address 00109 ); 00110 00111 PVOID 00112 RtlpDebugPageHeapReAllocate( 00113 IN PVOID HeapHandle, 00114 IN ULONG Flags, 00115 IN PVOID Address, 00116 IN SIZE_T Size 00117 ); 00118 00119 PVOID 00120 RtlpDebugPageHeapDestroy( 00121 IN PVOID HeapHandle 00122 ); 00123 00124 SIZE_T 00125 RtlpDebugPageHeapSize( 00126 IN PVOID HeapHandle, 00127 IN ULONG Flags, 00128 IN PVOID Address 00129 ); 00130 00131 ULONG 00132 RtlpDebugPageHeapGetProcessHeaps( 00133 ULONG NumberOfHeaps, 00134 PVOID *ProcessHeaps 00135 ); 00136 00137 ULONG 00138 RtlpDebugPageHeapCompact( 00139 IN PVOID HeapHandle, 00140 IN ULONG Flags 00141 ); 00142 00143 BOOLEAN 00144 RtlpDebugPageHeapValidate( 00145 IN PVOID HeapHandle, 00146 IN ULONG Flags, 00147 IN PVOID Address 00148 ); 00149 00150 NTSTATUS 00151 RtlpDebugPageHeapWalk( 00152 IN PVOID HeapHandle, 00153 IN OUT PRTL_HEAP_WALK_ENTRY Entry 00154 ); 00155 00156 BOOLEAN 00157 RtlpDebugPageHeapLock( 00158 IN PVOID HeapHandle 00159 ); 00160 00161 BOOLEAN 00162 RtlpDebugPageHeapUnlock( 00163 IN PVOID HeapHandle 00164 ); 00165 00166 BOOLEAN 00167 RtlpDebugPageHeapSetUserValue( 00168 IN PVOID HeapHandle, 00169 IN ULONG Flags, 00170 IN PVOID Address, 00171 IN PVOID UserValue 00172 ); 00173 00174 BOOLEAN 00175 RtlpDebugPageHeapGetUserInfo( 00176 IN PVOID HeapHandle, 00177 IN ULONG Flags, 00178 IN PVOID Address, 00179 OUT PVOID* UserValue, 00180 OUT PULONG UserFlags 00181 ); 00182 00183 BOOLEAN 00184 RtlpDebugPageHeapSetUserFlags( 00185 IN PVOID HeapHandle, 00186 IN ULONG Flags, 00187 IN PVOID Address, 00188 IN ULONG UserFlagsReset, 00189 IN ULONG UserFlagsSet 00190 ); 00191 00192 BOOLEAN 00193 RtlpDebugPageHeapSerialize( 00194 IN PVOID HeapHandle 00195 ); 00196 00197 NTSTATUS 00198 RtlpDebugPageHeapExtend( 00199 IN PVOID HeapHandle, 00200 IN ULONG Flags, 00201 IN PVOID Base, 00202 IN SIZE_T Size 00203 ); 00204 00205 NTSTATUS 00206 RtlpDebugPageHeapZero( 00207 IN PVOID HeapHandle, 00208 IN ULONG Flags 00209 ); 00210 00211 NTSTATUS 00212 RtlpDebugPageHeapReset( 00213 IN PVOID HeapHandle, 00214 IN ULONG Flags 00215 ); 00216 00217 NTSTATUS 00218 RtlpDebugPageHeapUsage( 00219 IN PVOID HeapHandle, 00220 IN ULONG Flags, 00221 IN OUT PRTL_HEAP_USAGE Usage 00222 ); 00223 00224 BOOLEAN 00225 RtlpDebugPageHeapIsLocked( 00226 IN PVOID HeapHandle 00227 ); 00228 00229 VOID 00230 RtlpDebugPageHeapBreak( 00231 PCH Text 00232 ); 00233 00234 00235 #endif // DEBUG_PAGE_HEAP 00236 00237 #endif // _HEAP_PAGE_H_

Generated on Sat May 15 19:40:16 2004 for test by doxygen 1.3.7