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