kddata.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include "kdp.h"
00022
#include "ke.h"
00023
#include "pool.h"
00024
#include "stdio.h"
00025
00026
00027
00028
00029
00030
00031
00032 extern ULONG
KiBugCheckData[];
00033
00034 extern PHANDLE_TABLE PspCidTable;
00035
00036 extern LIST_ENTRY
ExpSystemResourcesList;
00037 extern PPOOL_DESCRIPTOR ExpPagedPoolDescriptor;
00038 extern ULONG
ExpNumberOfPagedPools;
00039
00040 extern ULONG
KeTimeIncrement;
00041 extern LIST_ENTRY
KeBugCheckCallbackListHead;
00042 extern ULONG
KiBugcheckData[];
00043
00044 extern LIST_ENTRY
IopErrorLogListHead;
00045
00046 extern POBJECT_DIRECTORY ObpRootDirectoryObject;
00047 extern POBJECT_TYPE ObpTypeObjectType;
00048
00049 extern PVOID
MmSystemCacheStart;
00050 extern PVOID
MmSystemCacheEnd;
00051
00052 extern PVOID
MmPfnDatabase;
00053 extern ULONG
MmSystemPtesStart[];
00054 extern ULONG
MmSystemPtesEnd[];
00055 extern ULONG
MmSubsectionBase;
00056 extern ULONG
MmNumberOfPagingFiles;
00057
00058 extern ULONG
MmLowestPhysicalPage;
00059 extern ULONG
MmHighestPhysicalPage;
00060 extern PFN_COUNT
MmNumberOfPhysicalPages;
00061
00062 extern ULONG
MmMaximumNonPagedPoolInBytes;
00063 extern PVOID
MmNonPagedSystemStart;
00064 extern PVOID
MmNonPagedPoolStart;
00065 extern PVOID
MmNonPagedPoolEnd;
00066
00067 extern PVOID
MmPagedPoolStart;
00068 extern PVOID
MmPagedPoolEnd;
00069 extern ULONG
MmPagedPoolInfo[];
00070 extern ULONG
MmSizeOfPagedPoolInBytes;
00071
00072 extern ULONG
MmTotalCommitLimit;
00073 extern ULONG
MmTotalCommittedPages;
00074 extern ULONG
MmSharedCommit;
00075 extern ULONG
MmDriverCommit;
00076 extern ULONG
MmProcessCommit;
00077 extern ULONG
MmPagedPoolCommit;
00078 extern ULONG
MmExtendedCommit;
00079
00080 extern MMPFNLIST MmZeroedPageListHead;
00081 extern MMPFNLIST MmFreePageListHead;
00082 extern MMPFNLIST MmStandbyPageListHead;
00083 extern MMPFNLIST MmModifiedPageListHead;
00084 extern MMPFNLIST MmModifiedNoWritePageListHead;
00085 extern ULONG
MmAvailablePages;
00086 extern LONG
MmResidentAvailablePages;
00087 extern LIST_ENTRY
MmLoadedUserImageList;
00088
00089 extern PPOOL_TRACKER_TABLE PoolTrackTable;
00090 extern POOL_DESCRIPTOR NonPagedPoolDescriptor;
00091
00092 extern PVOID
MiUnloadedDrivers;
00093 extern ULONG
MiLastUnloadedDriver;
00094 extern ULONG
MiTriageActionTaken;
00095 extern ULONG
MmSpecialPoolTag;
00096 extern LOGICAL
KernelVerifier;
00097 extern PVOID
MmVerifierData;
00098 extern PFN_NUMBER
MmAllocatedNonPagedPool;
00099 extern SIZE_T
MmPeakCommitment;
00100 extern SIZE_T
MmTotalCommitLimitMaximum;
00101
00102
00103
00104
00105
00106
00107
00108 KDDEBUGGER_DATA64
KdDebuggerDataBlock = {
00109 {0},
00110 (ULONG64)0,
00111 (ULONG64)
RtlpBreakWithStatusInstruction,
00112 (ULONG64)0,
00113 (
USHORT)FIELD_OFFSET(
KTHREAD, CallbackStack),
00114 (
USHORT)FIELD_OFFSET(KCALLOUT_FRAME, CbStk),
00115
00116
#if defined(_X86_)
00117
(
USHORT)FIELD_OFFSET(KCALLOUT_FRAME, Ebp),
00118
#else
00119
(
USHORT)0,
00120
#endif
00121
00122
#if defined(_X86PAE_)
00123
(
USHORT)1,
00124
#else
00125
(
USHORT)0,
00126
#endif
00127
00128 (ULONG64)
KiCallUserMode,
00129 (ULONG64)0,
00130
00131 (ULONG64)&
PsLoadedModuleList,
00132 (ULONG64)&
PsActiveProcessHead,
00133 (ULONG64)&
PspCidTable,
00134
00135 (ULONG64)&
ExpSystemResourcesList,
00136 (ULONG64)&
ExpPagedPoolDescriptor,
00137 (ULONG64)&
ExpNumberOfPagedPools,
00138
00139 (ULONG64)&
KeTimeIncrement,
00140 (ULONG64)&
KeBugCheckCallbackListHead,
00141 (ULONG64)
KiBugCheckData,
00142
00143 (ULONG64)&
IopErrorLogListHead,
00144
00145 (ULONG64)&
ObpRootDirectoryObject,
00146 (ULONG64)&
ObpTypeObjectType,
00147
00148 (ULONG64)&
MmSystemCacheStart,
00149 (ULONG64)&
MmSystemCacheEnd,
00150 (ULONG64)&
MmSystemCacheWs,
00151
00152 (ULONG64)&
MmPfnDatabase,
00153 (ULONG64)
MmSystemPtesStart,
00154 (ULONG64)
MmSystemPtesEnd,
00155 (ULONG64)&
MmSubsectionBase,
00156 (ULONG64)&
MmNumberOfPagingFiles,
00157
00158 (ULONG64)&
MmLowestPhysicalPage,
00159 (ULONG64)&
MmHighestPhysicalPage,
00160 (ULONG64)&
MmNumberOfPhysicalPages,
00161
00162 (ULONG64)&
MmMaximumNonPagedPoolInBytes,
00163 (ULONG64)&
MmNonPagedSystemStart,
00164 (ULONG64)&
MmNonPagedPoolStart,
00165 (ULONG64)&
MmNonPagedPoolEnd,
00166
00167 (ULONG64)&
MmPagedPoolStart,
00168 (ULONG64)&
MmPagedPoolEnd,
00169 (ULONG64)&
MmPagedPoolInfo,
00170 (ULONG64)
PAGE_SIZE,
00171 (ULONG64)&
MmSizeOfPagedPoolInBytes,
00172
00173 (ULONG64)&
MmTotalCommitLimit,
00174 (ULONG64)&
MmTotalCommittedPages,
00175 (ULONG64)&
MmSharedCommit,
00176 (ULONG64)&
MmDriverCommit,
00177 (ULONG64)&
MmProcessCommit,
00178 (ULONG64)&
MmPagedPoolCommit,
00179 (ULONG64)&
MmExtendedCommit,
00180
00181 (ULONG64)&
MmZeroedPageListHead,
00182 (ULONG64)&
MmFreePageListHead,
00183 (ULONG64)&
MmStandbyPageListHead,
00184 (ULONG64)&
MmModifiedPageListHead,
00185 (ULONG64)&
MmModifiedNoWritePageListHead,
00186 (ULONG64)&
MmAvailablePages,
00187 (ULONG64)&
MmResidentAvailablePages,
00188
00189 (ULONG64)&
PoolTrackTable,
00190 (ULONG64)&
NonPagedPoolDescriptor,
00191
00192 (ULONG64)&
MmHighestUserAddress,
00193 (ULONG64)&
MmSystemRangeStart,
00194 (ULONG64)&
MmUserProbeAddress,
00195
00196 (ULONG64)
KdPrintCircularBuffer,
00197 (ULONG64)
KdPrintCircularBuffer+
sizeof(
KdPrintCircularBuffer),
00198
00199 (ULONG64)&
KdPrintWritePointer,
00200 (ULONG64)&
KdPrintRolloverCount,
00201 (ULONG64)&
MmLoadedUserImageList,
00202
00203 (ULONG64)0,
00204 (ULONG64)0,
00205 (ULONG64)
KiProcessorBlock,
00206 (ULONG64)&
MiUnloadedDrivers,
00207 (ULONG64)&
MiLastUnloadedDriver,
00208 (ULONG64)&
MiTriageActionTaken,
00209 (ULONG64)&
MmSpecialPoolTag,
00210 (ULONG64)&
KernelVerifier,
00211 (ULONG64)&
MmVerifierData,
00212 (ULONG64)&
MmAllocatedNonPagedPool,
00213 (ULONG64)&
MmPeakCommitment,
00214 (ULONG64)&
MmTotalCommitLimitMaximum,
00215 (ULONG64)&
CmNtCSDVersion
00216
00217 };
00218
00219
00220
00221
00222
00223
00224
00225
#ifdef _X86_
00226
#ifdef ALLOC_PRAGMA
00227
#pragma data_seg("PAGEKD")
00228
#endif
00229
#endif // _X86_
00230
00231
00232 UCHAR
KdPrintCircularBuffer[
KDPRINTBUFFERSIZE] = {0};
00233 PUCHAR
KdPrintWritePointer =
KdPrintCircularBuffer;
00234 ULONG
KdPrintRolloverCount = 0;
00235 KSPIN_LOCK
KdpPrintSpinLock = 0;
00236
00237
00238 BREAKPOINT_ENTRY KdpBreakpointTable[BREAKPOINT_TABLE_SIZE] = {0};
00239 UCHAR
KdpMessageBuffer[
KDP_MESSAGE_BUFFER_SIZE] = {0};
00240 UCHAR
KdpPathBuffer[
KDP_MESSAGE_BUFFER_SIZE] = {0};
00241 DBGKD_INTERNAL_BREAKPOINT KdpInternalBPs[
DBGKD_MAX_INTERNAL_BREAKPOINTS] = {0};
00242
00243 LARGE_INTEGER
KdPerformanceCounterRate = {0,0};
00244 LARGE_INTEGER
KdTimerStart = {0,0} ;
00245 LARGE_INTEGER
KdTimerStop = {0,0};
00246 LARGE_INTEGER
KdTimerDifference = {0,0};
00247
00248 ULONG_PTR
KdpCurrentSymbolStart = 0;
00249 ULONG_PTR
KdpCurrentSymbolEnd = 0;
00250 LONG
KdpNextCallLevelChange = 0;
00251
00252 ULONG_PTR
KdSpecialCalls[
DBGKD_MAX_SPECIAL_CALLS];
00253 ULONG
KdNumberOfSpecialCalls = 0;
00254 ULONG_PTR
InitialSP = 0;
00255 ULONG
KdpNumInternalBreakpoints = 0;
00256 KTIMER InternalBreakpointTimer = {0};
00257 KDPC InternalBreakpointCheckDpc = {0};
00258
00259 BOOLEAN
KdpPortLocked =
FALSE;
00260
00261
00262 DBGKD_TRACE_DATA
TraceDataBuffer[TRACE_DATA_BUFFER_MAX_SIZE] = {0};
00263 ULONG
TraceDataBufferPosition = 1;
00264
00265
00266 TRACE_DATA_SYM TraceDataSyms[256] = {0};
00267 UCHAR
NextTraceDataSym = 0;
00268 UCHAR
NumTraceDataSyms = 0;
00269
00270 ULONG
IntBPsSkipping = 0;
00271
00272
00273 BOOLEAN
WatchStepOver =
FALSE;
00274 PVOID
WSOThread =
NULL;
00275 ULONG_PTR
WSOEsp = 0;
00276 ULONG
WatchStepOverHandle = 0;
00277 ULONG_PTR
WatchStepOverBreakAddr = 0;
00278 BOOLEAN
WatchStepOverSuspended =
FALSE;
00279 ULONG
InstructionsTraced = 0;
00280 BOOLEAN
SymbolRecorded =
FALSE;
00281 LONG
CallLevelChange = 0;
00282 LONG_PTR
oldpc = 0;
00283 BOOLEAN
InstrCountInternal =
FALSE;
00284
00285 BOOLEAN
BreakpointsSuspended =
FALSE;
00286
00287
00288
00289
00290
00291
00292
00293
00294 ULONG
KdpRetryCount = 5;
00295 ULONG
KdpNumberRetries = 5;
00296 ULONG
KdpDefaultRetries =
MAXIMUM_RETRIES ;
00297 BOOLEAN
KdpControlCPending =
FALSE;
00298 BOOLEAN
KdpControlCPressed =
FALSE;
00299
00300 KDP_BREAKPOINT_TYPE KdpBreakpointInstruction = {0};
00301 ULONG
KdpNextPacketIdToSend = 0;
00302 ULONG
KdpPacketIdExpected = 0;
00303 PVOID
KdpNtosImageBase =
NULL;
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314 DEBUG_PARAMETERS KdDebugParameters = {0, 0};
00315
00316 KSPIN_LOCK
KdpDataSpinLock = 0;
00317 LIST_ENTRY
KdpDebuggerDataListHead = {
NULL,
NULL};
00318
00319
00320
00321
00322
00323 PFN_NUMBER
KdpSearchPageHits [
SEARCH_PAGE_HIT_DATABASE_SIZE];
00324 ULONG
KdpSearchPageHitOffsets [
SEARCH_PAGE_HIT_DATABASE_SIZE];
00325 ULONG
KdpSearchPageHitIndex;
00326
00327 LOGICAL
KdpSearchInProgress =
FALSE;
00328
00329 PFN_NUMBER
KdpSearchStartPageFrame;
00330 PFN_NUMBER
KdpSearchEndPageFrame;
00331
00332 ULONG_PTR
KdpSearchAddressRangeStart;
00333 ULONG_PTR
KdpSearchAddressRangeEnd;
00334
00335 ULONG
KdpSearchCheckPoint =
KDP_SEARCH_SYMBOL_CHECK;
00336
00337
00338
#ifdef _X86_
00339
#ifdef ALLOC_PRAGMA
00340
#pragma data_seg()
00341
#endif
00342
#endif // _X86_
00343
00344 KSPIN_LOCK
KdpTimeSlipEventLock = 0;
00345 PVOID
KdpTimeSlipEvent =
NULL;
00346 KDPC KdpTimeSlipDpc = {0};
00347 WORK_QUEUE_ITEM KdpTimeSlipWorkItem = {
NULL};
00348 KTIMER KdpTimeSlipTimer = {0};
00349 ULONG
KdpTimeSlipPending = 1;
00350
00351
00352 BOOLEAN
KdDebuggerNotPresent =
FALSE;
00353 BOOLEAN
KdDebuggerEnabled =
FALSE;
00354 BOOLEAN
KdPitchDebugger =
TRUE;
00355 BOOLEAN
KdpDebuggerStructuresInitialized =
FALSE ;
00356 ULONG
KdpOweBreakpoint;
00357 ULONG
KdEnteredDebugger =
FALSE;
Generated on Sat May 15 19:40:34 2004 for test by
1.3.7