IopDumpCallRemovePagesCallbacks
VOID __stdcall IopDumpCallRemovePagesCallbacks(UINT64 BugCheckCode){
unsigned int v1;
__int64 v2;
NTSTATUS v3;
_KBUGCHECK_REMOVE_PAGES RemovePages;
UINT8 ContinueProcessing;
_LIST_ENTRY *PreviousValidEntry;
__int64 v7;
v1 = BugCheckCode;
memset(&RemovePages, 0, sizeof(RemovePages));
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,
KbCallbackRemovePages,
&PreviousValidEntry) )
{
RemovePages.Context = 0i64;
RemovePages.BugCheckCode = v1;
v3 = 0;
do
{
RemovePages.Address = 0i64;
RemovePages.Flags = 0;
RemovePages.Count = 0i64;
ContinueProcessing = 0;
(*(void(__fastcall **)(__int64, __int64, _KBUGCHECK_REMOVE_PAGES *))(v2 + 16))(6i64, v2, &RemovePages);
if( v3 >= 0 )
{
if( RemovePages.Count )
v3 = IopRemovePageDumpRange(&RemovePages, &ContinueProcessing);
}
}
while( ContinueProcessing );
*(_BYTE *)(v2 + 44) = (v3 < 0) + 3;
}
else if( !PreviousValidEntry )
{
return;
}
v2 = *(_QWORD *)v2;
}
}Referenced by:
IoAddPagesForPartialKernelDump
IoWriteCrashDump