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