IopDumpCallAddPagesCallbacks
VOID __stdcall IopDumpCallAddPagesCallbacks(UINT64 BugCheckCode){
unsigned int v1;
__int64 v2;
NTSTATUS v3;
_KBUGCHECK_ADD_PAGES AddPages;
UINT8 ContinueProcessing;
_LIST_ENTRY *PreviousValidEntry;
__int64 v7;
v1 = BugCheckCode;
memset(&AddPages, 0, sizeof(AddPages));
v2 = *(&KiSwapEvent + 44);
PreviousValidEntry = (_LIST_ENTRY *)((char *)&KiSwapEvent + 352);
while( 1 )
{
v7 = v2;
if( (_UNKNOWN *)v2 == (_UNKNOWN *)((char *)&KiSwapEvent + 352) )
break;
if( KeValidateBugCheckCallbackRecord(
(_KBUGCHECK_REASON_CALLBACK_RECORD *)v2,
KbCallbackAddPages,
&PreviousValidEntry) )
{
AddPages.Context = 0i64;
AddPages.BugCheckCode = v1;
v3 = 0;
do
{
AddPages.Address = 0i64;
AddPages.Flags = 0;
AddPages.Count = 0i64;
ContinueProcessing = 0;
(*(void(__fastcall **)(__int64, __int64, _KBUGCHECK_ADD_PAGES *))(v2 + 16))(4i64, v2, &AddPages);
if( v3 >= 0 )
{
if( AddPages.Count )
v3 = IopAddPageDumpRange(&AddPages, &ContinueProcessing);
}
}
while( ContinueProcessing );
*(_BYTE *)(v2 + 44) = (v3 < 0) + 3;
}
else if( !PreviousValidEntry )
{
return;
}
v2 = *(_QWORD *)v2;
}
}Referenced by:
IoWriteCrashDump
IopAddLiveDumpPagesToPartialKernelDump