FsRtlSetFileSize

NTSTATUS __stdcall FsRtlSetFileSize(PFILE_OBJECT FileObject, _LARGE_INTEGER *FileSize, _LARGE_INTEGER *ptr32){
  _DEVICE_OBJECT *v4; 
  UINT64 v5; 
  _IRP *Irp; 
  _IO_STACK_LOCATION *CurrentStackLocation; 
  char v8; 
  char v9; 
  NTSTATUS v10; 
  NTSTATUS v11; 
  __int128 v13; 
  __int128 Object; 
  __int64 v15; 
  LONGLONG QuadPart; 

  v15 = 0i64;
  QuadPart = FileSize->QuadPart;
  v13 = 0i64;
  Object = 0i64;
  KeInitializeEvent((INT64)&Object, 0, 0);
  LODWORD(v4) = IoGetRelatedDeviceObject((INT64)FileObject);
  v5 = (UINT64)v4;
  Irp = IoAllocateIrpEx(v4, v4->StackSize, 0);
  if( !Irp )
    return -1073741670;
  IoSetThreadHardErrorMode(0);
  CurrentStackLocation = Irp->Tail.CurrentStackLocation;
  v9 = v8;
  Irp->Flags = 66;
  Irp->UserIosb = (_IO_STATUS_BLOCK *)&v13;
  Irp->UserEvent = (_KEVENT *)&Object;
  Irp->RequestorMode = 0;
  Irp->Tail.OriginalFileObject = FileObject;
  Irp->Tail.Thread = (_ETHREAD *)KeGetCurrentThread();
  Irp->AssociatedIrp.MasterIrp = (_IRP *)&QuadPart;
  CurrentStackLocation[-1].MajorFunction = 6;
  CurrentStackLocation[-1].FileObject = FileObject;
  CurrentStackLocation[-1].DeviceObject = (_DEVICE_OBJECT *)v5;
  LODWORD(CurrentStackLocation[-1].Parameters.SecurityContext) = 8;
  CurrentStackLocation[-1].Parameters.Options = 20;
  v10 = IofCallDriver(v5, (UINT64)Irp);
  if( v10 == 259 )
    KeWaitForSingleObject((UINT64)&Object, 0, 0, 0, 0i64);
  v11 = v13;
  if( v10 < 0 )
    v11 = v10;
  LODWORD(v13) = v11;
  LOBYTE(v11) = v9;
  IoSetThreadHardErrorMode(v11);
  return v13;
}

Referenced by:

MiCreateDataFileMap
MmExtendSection