PopZeroHiberFile
VOID __stdcall PopZeroHiberFile(PVOID FileHandle, _FILE_OBJECT *FileObject){
__int64 v4;
LARGE_INTEGER v5;
LARGE_INTEGER FileOffset;
LARGE_INTEGER LargeNumberOfBytes;
struct _IO_STATUS_BLOCK IoStatusBlock;
__int128 FileInformation;
__int64 v10;
IoStatusBlock = 0i64;
v10 = 0i64;
FileInformation = 0i64;
PopDiagTraceZeroHiberFile();
if( ZwQueryInformationFile(FileHandle, &IoStatusBlock, &FileInformation, 0x18ui64, FileStandardInformation) >= 0 )
{
FileOffset.QuadPart = 0i64;
v4 = FileInformation;
v5.QuadPart = 0i64;
do
{
LargeNumberOfBytes.QuadPart = v4 - v5.QuadPart;
if( MmZeroPageWrite(FileObject, &FileOffset, &LargeNumberOfBytes, 0x10000ui64) >= 0 )
break;
v4 = FileInformation;
v5.QuadPart = (FileOffset.QuadPart & 0xFFFFFFFFFFFF0000ui64) + 0x10000;
FileOffset = v5;
}
while( v5.QuadPart < (__int64)FileInformation );
}
PopDiagTraceZeroHiberFileEnd();
}Referenced by:
PopEnableHiberFile
PopTransitionSystemPowerStateEx