WheapClearPoison
NTSTATUS __stdcall WheapClearPoison(PPHYSICAL_ADDRESS StartAddress){
NTSTATUS v2;
VOID *v3;
_LARGE_INTEGER StartAddressa;
_LARGE_INTEGER NumberOfBytes;
int Src[8];
LONGLONG QuadPart;
StartAddressa = *StartAddress;
StartAddressa.anonymous_0.LowPart |= 1u;
NumberOfBytes.QuadPart = 4096i64;
if( MmRemovePhysicalMemory(&StartAddressa, &NumberOfBytes) < 0 )
return -1073741823;
v3 = MmMapIoSpaceEx(*StartAddress, 0x40ui64, 4ui64);
if( v3 )
{
__asm { clzero }
_mm_mfence();
MmUnmapIoSpace(v3, 0x40ui64);
v2 = 0;
}
else
{
v2 = -1073741823;
}
MmAddPhysicalMemory(StartAddress, &NumberOfBytes);
if( v2 >= 0 && KeGetCurrentIrql() <= 2u )
{
QuadPart = StartAddress->QuadPart;
Src[0] = 1733060695;
Src[1] = 1;
Src[2] = 40;
Src[3] = 1;
Src[5] = -2147483630;
Src[4] = 541868360;
Src[6] = 2;
Src[7] = 8;
WheaLogInternalEvent(Src);
}
return v2;
}Referenced by:
WheapAttemptPhysicalPageOffline