MiLogRelocationRva
VOID __stdcall MiLogRelocationRva(UINT64 Rva, UINT64 Size, _FILE_OBJECT *FileObject, _CONTROL_AREA *ControlArea){
__int64 v5;
__int16 v6;
_SUBSECTION *v7;
unsigned __int64 v8;
unsigned __int64 v9;
unsigned int v10;
unsigned __int64 v11;
__int64 v12[3];
v12[0] = 0i64;
v5 = (unsigned int)Size;
v6 = Rva;
v7 = MiOffsetToProtos(ControlArea, (unsigned int)Rva, (UINT64 *)v12);
if( v7 )
{
v8 = (v12[0] << 12) + ((unsigned __int64)v7->StartingSector << 9);
if( (PfSnNumActiveTraces || PfKernelGlobals.ScenarioPrefetchCount)
&& PsGetIoPriorityThread((_ETHREAD *)KeGetCurrentThread()) >= IoPriorityNormal )
{
v9 = ((unsigned __int64)(v6 & 0xFFF) + v5 + 4095) >> 12;
v10 = v9 + 1;
if( (v8 & 0xFFF) == 0 )
v10 = v9;
v11 = v8 & 0xFFFFFFFFFFFFF000ui64;
if( PfKernelGlobals.ScenarioPrefetchCount )
PfLogFileDataAccess(
(UINT64)FileObject->FsContext,
(_ETHREAD *)KeGetCurrentThread(),
v11,
v10,
PfFileAccessTypeRead);
if( PfSnNumActiveTraces && v10 )
{
do
{
PfSnLogPageFault(FileObject, v11, 2ui64);
v11 += 4096i64;
--v10;
}
while( v10 );
}
}
}
}Referenced by:
MiCaptureImageCfgContext
MiLogRelocationFaults
MiParseComAndCetHeaders
MiParseImageLoadConfig